2011-11-03 52 views
0

我有以下代碼:PHP/MySQL錯誤:mysql_num_rows():提供的參數是不是一個有效

$sql = mysql_query("SELECT id FROM logins WHERE id='" . $this->skID . "'"); 

if(mysql_num_rows($sql) == 0) { return false; } 
else { 
     list($skID) = mysql_fetch_row($sql); 
     return $skID; 
}  

其帶回下面的錯誤。

mysql_num_rows(): supplied argument is not a valid MySQL result resource

我也呼應了SQL和數據庫中運行這個,我得到的結果,所以什麼問題 - 任何想法非常歡迎?

[編輯]對不起,我是一個絕對白癡,試圖在ms數據庫上使用mysql函數!抱歉!

+0

什麼在'$ sql' var? – hsz

+0

提示:當你像這樣的東西 - 然後做合理的事情和**立即**刪除你的問題。離開它將意味着其他人將花時間尋找密切的請求! – GhostCat

回答

1

您是否檢查過您的連接已建立?也許嘗試在查詢後輸出查詢結果。還嘗試回顯您的mysql_error()以查看是否有任何錯誤。

echo mysql_error(); 

在您的查詢後直接。

0

變化

$sql = mysql_query("SELECT id FROM logins WHERE id='" . $this->skID . "'"); 

if (!$sql = mysql_query("SELECT id FROM logins WHERE id='" . $this->skID . "'")) { 
    // handle error here 
    // for example: 
    die('MySQL Error: '.mysql_error()); 
    // ...but don't show the result of mysql_error() in a production environment!! 
} 

您查詢失敗,mysql_query()回報FALSEmysql_num_rows()預期結果的資源,而不是一個布爾值,因此它發出您所看到的錯誤。

1

運行的查詢(連同一致的變量命名)的正確方法:

$sql = "SELECT id FROM logins WHERE id='" . (int)$this->skID . "'"; 
$result = mysql_query($sql) or trigger_error(mysql_error." in ".$sql); 

該代碼會告訴你什麼是錯的查詢。

不建議使用die(),因爲它會破壞您的代碼執行並使頁面顯得雜亂無章。更不用說,向屏幕無條件輸出錯誤信息是一個安全缺陷。

相關問題