2014-01-23 2 views
0

Я пытаюсь получить строки из запроса my_sqli, который начинается только с определенной буквы, однако он всегда выводит весь массив. Вот мой код, я пытаюсь получить первое значение, посмотреть, начинается ли оно с правильной буквы, а затем повторить его, если это произойдет, а затем перейти к следующему.PHP Попытка получить строки из массива, которые начинаются с определенной буквы, давая мне все

$strSQL = "SELECT title FROM blogtable ORDER BY title ASC"; 
$titleResult = mysqli_query($con, $strSQL); 

while($rowTitle = mysqli_fetch_array($titleResult)) 
{ 
    $strTitle = $rowTitle['title']; 
    $subTitle = substr($strTitle,0,2); 
    $subNum = ord($subTitle);//This gets me the value of the first letter 
    if($subNum = $topLetter)//$topLetter = 65, which is capital A 
    { 
     echo $strTitle; 
     echo "<br>"; 
    } 
} 

Таким образом, проблема здесь в том, что, скажем, если у меня есть 3 вещи, и только 2 начать с, он будет выводить все 3, но я просто хочу 2, которые начинаются с А.

+1

Это может быть глупый вопрос, но почему бы просто не сделать это в запросе? 'SELECT title FROM blogtable WHERE title LIKE 'A%' ORDER BY title ASC' Обычно это будет быстрее, особенно для больших наборов результатов. –

+0

Вам следует рассмотреть возможность реорганизации схемы базы данных с алфавитными идентификаторами, соответствующими первой букве. Намного легче. Гораздо эффективнее. –

+0

О, я не знал, что это возможно благодаря подсказке. – user3150430

ответ

5

Изменение ваш оператор if.

if($subNum == $topLetter) 

Объяснение: Оператор== тест на равенство и оператор = является оператором присваивания.

+1

Чтобы уточнить, = _assigns_, == _compares_. – ElendilTheTall

+0

Отредактировал мой ответ. – MillaresRoo

+0

Ничего себе, я не могу поверить, что сделал такую ​​простую ошибку, спасибо. – user3150430

Смежные вопросы