2013-05-02 97 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'");