这是一个非常简单的 MySQL 查询,我经常使用,但不知何故,对于我的一个网站脚本来说,它不起作用。不仅仅是网页中的一处,而是包括登录和内容拉取在内的多个区域。我检查了所有内容,包括我的站点是否正确连接到 MySQL 数据库服务器(因为注册可以工作,但登录不能)我做了一个快速测试,看看它是否正常工作:
$usrn=$_POST['username'];
$pswd=$_POST['password'];
$query = "SELECT * FROM users WHERE user='$usrn' AND password='$pswd' DESC LIMIT 0,1";
$result = mysql_query($query);
$i=0;
while ($i < 1) {
$usr=@mysql_result($result,$i,"user");
$psw=@mysql_result($result,$i,"password");
echo $usrn."|".$usr."|".$pswd."|".$psw;
$i++;
}
在此脚本中,它将输出如下内容:
username||password|
这意味着通常在我的其他网站上运行的 $usr 和 $psw 上没有任何输出。
此外,当我添加以下内容时:
$num = mysql_numrows($result);
它会给我一条错误消息:
Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /index.php on line 906
最佳答案
问题是 DESC 之前没有 order by 以及您传递给 limit 的参数:
...DESC LIMIT 0,1
这需要是:
...ORDER BY user DESC LIMIT 10
另外,为了您应用程序的安全,我真的希望您不要像这样直接将输入的参数从表单直接传递给您的查询!请研究sql注入(inject)攻击和参数化。
关于PHP 不能与 MySQL 查询一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5602857/