2012-12-02 69 views
3

嗨,大家好奇地想解決這個令人討厭的問題。這裏是我的片段。警告:mysql_result():提供的參數不是第4行(...)中有效的MySQL結果資源

我檢查了一些類似於我的錯誤的其他問題,但到目前爲止我無法解決它。

任何幫助,非常感謝。 :)

<?php 
function user_exists ($username) { 
$username = sanitize($username); 
return (mysql_result(mysql_query("SELECT COUNT(user_id) FROM users WHERE username = $username"), 0) == 1) ? true : false; 
} 
?> 
+0

如果我沒有記錯,這是因爲它沒有返回任何行。 – user982270

+0

嘗試做一個'回聲'看看有什麼'淨化($用戶名)'返回 – mgraph

回答

3

你應該在一些線路來處理這些錯誤或特殊情況下,拆分您的代碼。 mysql_query將返回零到n行或發生錯誤。因此返回的資源將僅適用於非錯誤查詢。這可以用來處理像下面這樣的情況。

首先建立並執行查詢,接下來處理資源

$query="SELECT COUNT(user_id) FROM users WHERE username = ".$username; 
$result = mysql_query($query); 

U可以使用以下方法來確定發生了什麼事在發生錯誤的情況下:

if(!$result) die("SELECT failed: ".mysql_error()); 

或這些想法來處理這個問題

if (!$result=mysql_query($query)) { 
     return false; // or similar operation 
    } 

    if (mysql_num_rows($result)!=1){ 
     return false; 
    }else{ 
     return true; 
    } 
0

這可能發生,當mysql_query返回false,如果由於某種原因失敗。所以,你應該拆分這分成多個報表和檢查返回值

$sql = "SELECT COUNT(user_id) FROM users WHERE username = $username"; 
$result = mysql_query($sql); 
if ($result === false) { 
    // error handling 
    return false; 
} 

return (mysql_result($result, 0) == 1) ? true : false; 
+0

分類!我從字段中取出單引號。因此而不是: return(mysql_result(mysql_query(「SELECT COUNT('user_id')FROM'users'WHERE'username'='$ username'」),0)== 1)?真假; 我寫了-------> return(mysql_result(mysql_query(「SELECT COUNT(user_id)FROM users WHERE username ='$ username'」),0)== 1)?真假; – user1871201

+0

@ user1871201如果這解決了您的問題,請考慮[接受我的回答](http://meta.stackexchange.com/a/5235)。謝謝。 –

相關問題