SQL работает в phpMyAdmin, но возвращает неверное количество строк в скрипте веб-страницы - PullRequest
1 голос
/ 16 ноября 2011

У меня есть сценарий входа, который ранее казался работающим, но теперь не работает для некоторых пользователей, включая некоторых, которые ранее работали.

SQL всегда работает в phpMyAdmin, но на веб-странице для некоторых пользователей этовсегда возвращает ноль строк.Вот код, где есть проблема:

$query_str = 'SELECT id, username, level_access, active FROM users WHERE username = "';
$query_str .= mysql_real_escape_string($uname).'"';
$query_str .= ' AND password = "'.mysql_real_escape_string($pwd).'"';
echo $query_str. "<br/>";

$result = mysql_query($query_str);
$num_result = mysql_num_rows($result);   
echo $num_result. "<br/>";

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

Всегда получал один и тот же результат, для некоторых пользователей логин всегда работает, для других он всегда не возвращает строк, даже еслиони возвращаются в phpMyAdmin

Наконец, я удалил инструкцию where, чтобы создать следующий оператор SQL:

$query_str = 'SELECT id, username, level_access, active FROM users';

На моей веб-странице всегда возвращается 8 строк, независимо от того, сколько там пользователейявляются.Если есть 8, 9 или 10 пользователей, возвращается 8 строк.Я удалил пользователей, чтобы было менее 8 пользователей, но на веб-странице phpMyAdmin по-прежнему возвращается 8 строк, каждый раз возвращается правильное число.

Очевидно, что проблема не в коде.Так что это вне моей компетенции.Что может быть причиной этой проблемы и как ее решить?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2011

Вы подключились к базе данных (как вы думаете), запрашивается явно?

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
mysql_select_db ('myDatabase' , $link);

Тогда вам нужно использовать дескриптор $link в ваших запросах.

0 голосов
/ 16 ноября 2011

Каковы ваши настройки кэша MySQL? Получение 8 строк, когда их меньше, чем в базе данных, звучит так, как будто это может быть кэширование старых результатов запроса для меня. Вы можете отключить кэш, добавив SQL_NO_CACHE после оператора SELECT, поэтому можно ли изменить запрос на $query_str = 'SELECT SQL_NO_CACHE id, username, level_access, active FROM users'; help?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...