2013-05-02 79 views
0

即时得到这个错误:警告:mysql_result()。无法解决

警告: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

删除这不是逃避列使用反引号操作符的正确方式'”“''从username' – asprin 2013-05-02 05:48:03

回答

2

查询应该是,你用'各地列名,你必须围绕与`

mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `username` = '$username'"); 

改变它这个

`active` == 1"); 

`active` = 1"); 
+0

林不知道它有什么不同? – RightLeftRight12 2013-05-02 05:49:11

+0

我没有看到downvote – asprin 2013-05-02 05:49:17

+1

好吧哇,我现在看到它!非常感谢 – RightLeftRight12 2013-05-02 05:49:58

3

查询不起作用的原因是因为您正在用单引号包装列名和表名。它们是标识符而不是字符串文字,因此它们不应该用单引号包装。

SELECT COUNT(id) FROM users WHERE username = '$username' 

如果碰巧使用的列名和表名是保留关键字,它们可以与不带单引号反引号逃脱。

在这种情况下,反引号并不是必需的,因为它们都不是保留关键字。

其他链接:


一点题外话,查询与SQL Injection脆弱的,如果变量的值(小号)是从哪里来的外。请看下面的文章,了解如何防止它。通过使用PreparedStatements你可以摆脱使用单引号围绕值。

+0

+1精确解释 – asprin 2013-05-02 05:49:40

+1

好的谢谢非常! – RightLeftRight12 2013-05-02 05:53:27

+0

林非常抱歉,但我现在收到警告在另一行,但根据另一个改变它。你愿意看看那个吗?它的上面 – RightLeftRight12 2013-05-02 06:03:41

1

如果你想喜欢这个

$query = mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `username` = '$username'");