php - SQL 在 phpMyAdmin 中有效,但在网页脚本中返回错误的行数

标签 php mysql phpmyadmin

我有一个以前似乎有效的登录脚本,但现在对某些用户无效,包括一些以前有效的用户。

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行返回,每次都返回正确的数字。

很明显问题不是代码。所以这超出了我的专业范围。是什么导致了这个问题,我该如何解决?

最佳答案

您的 MySQL 缓存设置是什么?当数据库中的行少于 8 行时返回 8 行听起来像是在缓存查询的旧结果给我。您可以通过在 SELECT 语句之后添加 SQL_NO_CACHE 来禁用缓存,将查询更改为 $query_str = 'SELECT SQL_NO_CACHE id, username, level_access, active FROM用户的; 帮助 ?

关于php - SQL 在 phpMyAdmin 中有效,但在网页脚本中返回错误的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8146073/

相关文章:

php - SQL查询PHP网站从Win7到MAMP

mysql - UPDATE INNER JOIN on 子句中的未知列

php - 使用 PHP 和新的 Twitter API

php - FB.login 使用 PHP API

php - 使用 pchart 创建的图表超时

mysql - Sequelize 3 个表与 2 个连接表之间的位置

mysql - Redis作为MySQL引擎?

树莓派 3 : i wasn't able to write a value in db using a variable 上的 python 和 sql

php - check_phone 函数中的电话号码验证

php - 使用外键从另一个表中选择名称