Php 为什么我得到的数值是0而不是1?

Php 为什么我得到的数值是0而不是1?,php,mysql,Php,Mysql,我相信你们中的一些人已经厌倦了我的帖子,因为它们看起来很基本,但我在“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 当我检查反勾号是否在正确的位置

我相信你们中的一些人已经厌倦了我的帖子,因为它们看起来很基本,但我在“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语法错误:

$login_query = mysql_query("SELECT COUNT (`user_id`) as `count`, `user_id` FROM `users` WHERE `email` = '$email' AND `password` = '".md5($password)."'");
                                                        ^--   ^--
反勾号用于转义字段/表规范中的保留字。
as
别名不需要转义,因为它显然不是字段/表名

您还使用了聚合函数,
count()
,但也选择了非聚合字段(
user\u id
),而没有
group by
子句,因此mysql也会对此抱怨

如果代码的结构如下所示:

$result = mysql_query($sql) or die(mysql_error());
                           ^^^^^^^^^^^^^^^^^^^^^^

您将看到语法错误消息。永远不要假设查询已成功。始终检查错误。即使您的SQL语法100%完美,也有太多其他原因导致无法检查。

正如zerkms所说,您不需要
COUNT

问题是:
COUNT
不喜欢它和括号之间的空格,因此:

COUNT (
应该是

COUNT(

编辑:

SELECT `user_id` FROM `users` WHERE `email` = '<email>' AND `password` = '<hash>'
$result = mysql_query($query);
$login = mysql_result($result);
if(mysql_num_rows($result) == 0) return false;
return $login['user_id'];
这应该更好地发挥作用:

SQL:

SELECT `user_id` FROM `users` WHERE `email` = '<email>' AND `password` = '<hash>'
$result = mysql_query($query);
$login = mysql_result($result);
if(mysql_num_rows($result) == 0) return false;
return $login['user_id'];
顺便说一句,你有可能

SQL注入*-----================[';SQL-->=======0

您应该在准备好的语句中使用MySQLi或PDO。

看起来执行SQL语句时出错
mysql\u查询
仅在成功时返回资源。出错时,它返回
false
(请参阅)。这就解释了错误,因为您正在调用
mysql\u result
,值
false
作为第一个参数。

echo mysql\u error()附言:你不需要在那里计数(…)
。只需检查响应1中是否有
用户id
。使用或。2.使用准备好的语句,
*\u escape\u string
可以解决。3.使用试接球投掷。(示例:
如果(!$conn)抛出新异常('can not connect to the database server!');
)我取出了计数之间的空格。现在我得到了这个错误:“警告:mysql_result()[function.mysql result]:$user_id未在C:\Program Files(x86)中的mysql结果索引11中找到”\EasyPHP-5.3.9\www\Image Upload\func\user.func.php第10行“。。。我做错了什么?@TechGuy24尝试去掉
user\u id
周围的反勾号,看看是否有效。@TechGuy24关于
SELECT COUNT(`user\u id`)、user\u id`AS`COUNT`、user\u id`FROM…
?什么都没做。我仍然有那个错误。没有区别,我仍然得到相同的错误。很抱歉在这篇文章上重复了答案。现在删除它。