我确定你们中的一些人已经厌倦了我的帖子,因为它们看起来非常基本但是我遇到了与“mysql_result()”类似的问题。我的代码不断输出此错误:
Warning: mysql_result() expects parameter 1 to be resource, boolean given in C:\Program Files (x86)\EasyPHP-5.3.9\www\Image Upload\func\user.func.php on line 10
当我检查反击是否在正确的位置时..我看不出我的错误可能在哪里......代码是:
function login_check($email, $password){
$email = mysql_real_escape_string($email);
$login_query = mysql_query("SELECT COUNT (`user_id`) as `count`, `user_id` FROM `users` WHERE `email` = '$email' AND `password` = '".md5($password)."'");
return (mysql_result($login_query, 0) == 1) ? mysql_result($login_query, 0, '$user_id') : false;
}
这是第10行:
return (mysql_result($login_query, 0) == 1) ? mysql_result($login_query, 0, '$user_id') : false;
感谢所有的耐心和帮助! -TechGuy24
答案 0 :(得分:2)
语法错误:
$login_query = mysql_query("SELECT COUNT (`user_id`) as `count`, `user_id` FROM `users` WHERE `email` = '$email' AND `password` = '".md5($password)."'");
^-- ^--
反引号用于转义字段/表规范中的保留字。 as
别名不需要转义,因为它显然不是字段/表名。
您也在使用聚合函数count()
,但也选择非聚合字段(user_id
),没有group by
子句,因此mysql也会抱怨这一点。
如果您的代码结构如下:
$result = mysql_query($sql) or die(mysql_error());
^^^^^^^^^^^^^^^^^^^^^^
你会看到语法错误消息。永远不要假设查询已经成功。总是检查错误。即使您的SQL语法100%完美,也有太多其他原因导致无法检查。
答案 1 :(得分:0)
正如zerkms所说,你不需要COUNT
。
问题:COUNT
不喜欢它和圆括号之间的空格,所以:
COUNT (
应该是
COUNT(
修改强>
这应该更好:
<强> SQL:强>
SELECT `user_id` FROM `users` WHERE `email` = '<email>' AND `password` = '<hash>'
<强> PHP:强>
$result = mysql_query($query);
$login = mysql_result($result);
if(mysql_num_rows($result) == 0) return false;
return $login['user_id'];
顺便说一下,你有......的风险。
SQL INJECTION *------==========[');SQL--|----]=====0
你应该使用MySQLi或PDO,并准备好陈述。
答案 2 :(得分:0)
执行SQL语句时出现错误mysql_query
仅在成功时返回资源。出错时,它会返回false
(请参阅PHP Manual on mysql_query)。这解释了错误,因为您使用值mysql_result
作为第一个参数调用false
。