2013-01-31 19 views
-2

可能重复一个有效的MySQL结果资源:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select警告:mysql_result():提供的参数不是在

大家好,我希望你能帮助解决这个问题是你一个人与我的最后一个。我试图与PHP的用户注册和我做的一切,除了这个好:

 Warning: mysql_result(): supplied argument is not a valid 
    MySQL result resource in 

首先我试图做一个了sanitize功能,但没有奏效。这是我第一次尝试

function user_exists ($username){ 
    $username = sanitize ($username); 
    return (mysql_result(mysql_query("SELECT COUNT('id') FROM 'members' WHERE 
    'username' = '$username' "), 0) == 1) ? true : false; 
    } 

然后我虽然我可以尝试用mysql_real_escape_string,但那么mysql_result错误来了,这是推动我疯了,因为我无法找到我得到了什么错。这里是我的代码与mysql_real_escape_string:

 function user_exists ($username){ 
    $username = mysql_real_escape_string ($username); 
    return (mysql_result(mysql_query("SELECT COUNT('id') FROM 'members' WHERE 
    'username' = '$username' "), 0) == 1) ? true : false; 
    } 

我希望有人能告诉我在哪里,我听错了,所以我可以从我的错误中吸取教训。谢谢你们!!!

+0

和[MySQL的 - 当使用单引号,双引号,反引号和(http://stackoverflow.com/questions/11321491/mysql-when-to-use-single-quotes-double-引号和反引号) – mario

+1

请不要使用mysql_ *函数,它们被标记为已弃用。使用PDO或MySQLi。 http://php.net/manual/en/mysqlinfo.api.choosing.php –

回答

0

问题是你用单引号包装表名和列名,它必须被删除,因为名称不在MySQL保留关键字列表中,并且正确的方法是使用反引号。

SELECT COUNT(id) 
FROM members 
WHERE username = '$username' 
+0

这实际上并非如此。你的回答是正确的,但你的推理不是。即使它们是MySQL保留的关键字,单引号也不是逃避它们的正确方法。您必须使用反标字符。引号是用于字符串的,而不是标识符。 –

+0

表名和列名的单引号总是不正确的。 – Arjan

+0

@ColinMorelli等等,我说过'单引号是逃避它们的正确方法吗? –

相关问题