我收到此错误:
警告:mysql_result():提供的参数不是有效的MySQL结果资源
我已经检查了其他问题,似乎无法找到答案。有什么想法吗?
$query = mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `username` = '$username' AND `active` == 1");
return(mysql_result($query, 0) == 1) ? true : false;
答案 0 :(得分:3)
您的查询无效的原因是您使用单引号包装列名称和表名称。它们是标识符而不是字符串文字,所以它们不应该用单引号换行。
SELECT COUNT(id) FROM users WHERE username = '$username'
如果使用的列名和表名是保留关键字,则可以使用反引号转义,而不是使用单引号。
在这种情况下,不需要反引号,因为它们都不是保留关键字。
其他链接:
作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection
攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。
答案 1 :(得分:2)
查询应该是,您使用'
围绕列名称,您必须使用`
mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `username` = '$username'");
更改此
`active` == 1");
到
`active` = 1");
答案 2 :(得分:1)
如果你想要这个
,这不是一个正确的方法来转义列使用反引号操作符$query = mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `username` = '$username'");