PHP mysql_num_rows сообщение "нет результатов"? - PullRequest
1 голос
/ 03 января 2012

У меня есть поиск по ключевым словам MySQL на моем сайте, и он работает нормально.Проблема в том, что, когда кто-то ищет ключевое слово, которое я не добавил, на странице результатов ничего не отображается.

Вместо того, чтобы ничего не отображаться, я хотел бы получить сообщение no results found.

Поэтому я использовал следующий код:

if (mysql_num_rows($Recordset1) > 0) {
    // no results
    echo 'No results found.';
} else {
    do {
    // output
    } while($res = mysql_fetch_assoc($Recordset1));
}

Проблема в том, что всякий раз, когда я ищу ключевое слово, зная, что оно находится в моей базе данных, я получаю результаты вместе с сообщением no results found.(Сообщение no results found также появляется в левом верхнем углу моей веб-страницы, толкая весь мой сайт вниз.)

И когда я искал ключевое слово, которое, как я знал, отсутствовало в моей базе данных, я не получил сообщение навсе, это не показывало ничего как прежде.

Я играл с большими, меньшими и равными знаками и получил похожие проблемы.Мне сказали, что моя логика была обратной, но я не уверен, как она должна выглядеть.

Любая помощь будет принята с благодарностью, заранее спасибо.

Ответы [ 4 ]

1 голос
/ 03 января 2012
if (mysql_num_rows($Recordset1) == 0) {
// no results
echo 'No results found.';
} else {
while($res = mysql_fetch_assoc($Recordset1)) {
// output
}
}

попробуй ...

1.) Если результата нет, то mysql_num_rows будет равен 0 2.) перед получением вывода нужно извлечь его в переменную не после использования

1 голос
/ 03 января 2012

do {}, хотя циклы не подходят для выборки из базы данных, если только вы не выполняете выборку строк ДО входа в цикл.Для первой итерации вашего выходного раздела не будет никаких результатов, извлеченных из базы данных, поэтому вы по сути ничего не выводите.

mysql_num_rows () вернет 0, если результатов нет, поэтомувы на самом деле переворачиваете elogic, говоря, что на самом деле нет строк.Даже одна строка результатов может заставить > 0 возвращать значение true и выводить «без результатов».

0 голосов
/ 03 января 2012

Измените условие if на

if (mysql_num_rows($Recordset1) == 0) {

Когда вы используете > 0, это означает, что «результаты есть», а нет «результаты не найдены».

0 голосов
/ 03 января 2012
if (mysql_num_rows($Recordset1) == 0) {
 . . .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...