mysql_result()期望参数1是资源,而是给出布尔值

时间:2014-07-16 09:23:21

标签: mysql

if(mysql_result(mysql_query("SELECT COUNT (`user_id`) FROM `users` WHERE `email` = '$email' AND `email_code` = '$email_code' AND `active` = 0"), 0) == mysql_query("UPDATE `users` SET `active` = 1 WHERE `email` = '$email'");
   return true;
} else {
   return false;
}

我知道这可能是某个地方的重复,但这让我现在感到疯狂。请帮忙。

3 个答案:

答案 0 :(得分:1)

如果查询中出现导致其失败的错误,则会显示此错误消息。

注意:如果查询不影响任何行,则不会出现此错误。只有语法无效的查询才会生成此错误。

疑难解答步骤

确保将开发服务器配置为显示所有错误。您可以将它放在文件顶部或配置文件中:error_reporting(-1);.如果您有任何语法错误,这将指出它们。

使用mysql_error()mysql_error()将报告MySQL在执行查询时遇到的任何错误。

样本使用:

mysql_connect($host, $username, $password) or die("cannot connect"); 
mysql_select_db($db_name) or die("cannot select DB");

$sql = "SELECT * FROM table_name";
$result = mysql_query($sql);

if (false === $result) {
    echo mysql_error();
}

从MySQL命令行或phpMyAdmin等工具运行查询。如果您的查询中存在语法错误,则会告诉您它是什么。

确保您的报价正确无误。查询或值周围缺少引号可能导致查询失败。

确保您逃脱了自己的价值观。查询中的引号可能导致查询失败(并且还允许您对SQL注入开放)。使用mysql_real_escape_string()来转义输入。

确保您没有混合使用mysqli_ *和mysql_ *函数。它们不是同一个东西,不能一起使用。 (如果您要选择一个或另一个使用mysqli_ *。请参阅下面的原因。)

其他提示

mysql_ *函数不应该用于新代码。它们不再维护,社区已开始弃用过程。相反,您应该了解准备好的语句并使用PDO或MySQLi。如果您无法决定,本文将有助于您选择。如果你想学习,这是一个很好的PDO教程。

答案 1 :(得分:0)

您的mysql_query()函数调用失败并返回FALSE,这是mysql_result()的第一个参数无效。

单独运行mysql_query()并致电mysql_error()以获取错误。

查询失败,因为COUNT (...)应为COUNT(...),否则会尝试在表格中找到名为count的列。

答案 2 :(得分:0)

您的查询应为

SELECT COUNT(`user_id`) FROM `users` WHERE `email` = '$email' AND `email_code` = '$email_code' AND `active` = 0

删除COUNT( user_id )

之间的空格