Задать вопрос
@fug35381

Почему не получается определить количество результатов в запросе к mysql на php?

Почему не получается определить количество результатов в запросе к mysql на php?
$db = mysql_connect($host,$user,$password);
mysql_select_db($basename, $db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");

$result = mysql_query("SELECT * FROM keywords WHERE keyword = 'photo онлайн'");
$total = mysql_num_rows($result);
echo $total;

$result = mysql_query("SELECT * FROM keywords WHERE keyword = 'modeling websites'");
$total = mysql_num_rows($result);
echo $total;

результат: 01
пробовал запрос выполнять руками и все нормально, а через скрипт не хочет
  • Вопрос задан
  • 275 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 3
@Kostya00723
"SELECT COUNT(*) FROM keywords WHERE keyword = 'modeling websites'"
Попоробуй такой запрос, тогда num rows тебе вообще не понадобится
База вернет число записей сама
Ответ написан
alsopub
@alsopub
Возможно дело в кодировке файла скрипта, раз проблема вылезает на запросе с русскими буквами.
Ответ написан
ruFelix
@ruFelix
Предсказание будущего по руке, таро, кофе.
1) Сомневаюсь, что вы используете mysql 3-ей версии, а ведь исключительно для поддержки совместимости с этим старым хламом расширение mysql ещё есть в некоторых не свежих версиях пхп. А так оно устарело в районе 5-10 лет, используйте mysqli.
2) у вас расхождение в вопросе, в скрипте вы смотрите количество строк в ответе, а при при выполнении запроса руками смотрите на результат. Тёплое с мягким не находите?

3) Ваша проблема в кодировках, а правильный вопрос почему не ищет кириллицу. Ваша проблема скорее всего в неверном character set и collotion на стороне mysql, которые могут быть выставлены на уровне сервера, бд, таблицы и поля (если не определено внизу, то берётся значение сверху). И ещё более вероятно, что вы залили или пишете utf дамп/данные в базу которой кодировка latin или cp1251 (они обе совпадают с utf8 в части латиницы) в этом случае на клиенте всё как бы ок, а кириллицу mysql не понимает.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@ivoronov
Веб-разработчик
Честно говоря, не очень горю желанием проверять Ваш код, потому добавлю: SQL_CALC_FOUND_ROWS + FOUND_ROWS() не пробовали?
И не нужно никаких SELECT count`ов. Для этого, как раз, и есть FOUND_ROWS. Посмотрите документацию. Все просто.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы