2014-07-16 71 views
-2
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; 
} 

我知道这可能是从某处复制的,但是现在这使我疯狂。请帮忙。mysql_result()期望参数1是资源,而不是布尔给定

+0

我希望你逃避你的变量之间取出的空间。请注意,'mysql'扩展将很快被弃用,并在将来被删除。考虑使用'mysqli' – bear

+0

@ bear不需要转义变量。 PHP在使用双引号时区分变量。 – P5Coder

+0

@ P5Coder如果一个变量包含''',则查询将失败。 – bear

回答

0

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

单独运行mysql_query(),并调用mysql_error()以获取错误。

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

+0

它告诉我,COUNT不存在 –

+0

啊,你需要把计数和括号之间的空间! – Arth

+0

谢谢YouUUUUUUUUUUUUUUUUUUUUU @Arth –

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教程。

+0

它告诉我COUNT不存在 –

+0

您应该将这些信息(“它告诉我COUNT不存在”)添加到您的问题中! –

+0

删除COUNT之后的空格。如果这有助于记住标记为正确:) – shivampaw

0

您的查询应该读

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

COUNT( USER_ID )

相关问题