2013-03-05 42 views
-1

的代碼:警告:mysqli_num_rows():提供的參數不是一個有效的MySQL結果

$stmt = mysqli_prepare($link, "SELECT * FROM adm_users WHERE users_username = ? AND users_password = ?"); 
    mysqli_stmt_bind_param($stmt, 'ss', $user_adm_name, $user_adm_password); 
    mysqli_stmt_execute($stmt); 
    mysqli_stmt_store_result($stmt); 
    mysqli_stmt_fetch($stmt); 
    $adm_check_log = mysqli_num_rows($stmt); 
    mysqli_stmt_close($stmt); 

回程:

警告:mysqli_num_rows():提供的參數不是一個有效的MySQL 結果

爲什麼?有人能爲我解釋嗎?

回答

0

你應該檢查函數的返回值!

似乎有些事情是與查詢腳麻(作爲一個程序員,當你遇到一個錯誤做到這一點在任何情況下)。因此,將代碼更改爲如下所示:

$result = mysqli_query(...); 

if(!$result) { 
    die(mysqli_error($link); 
} 

對所有正在使用的mysqli函數執行相同操作。

0

這只是意味着,在這裏傳遞了$語句值:

$adm_check_log = mysqli_num_rows($stmt); 

是不正確的類型。通常它表示你沒有從你的查詢中返回任何東西,或者它有錯誤。

嘗試輸出它,看看你會得到什麼:

var_dump($stmt); 

更換你有什麼與此有關。報告了什麼錯誤?

if($stmt = mysqli_prepare($link, "SELECT * FROM adm_users WHERE users_username = ? AND users_password = ?")) { 
    $stmt->bind_param("ss", $user_adm_name, $user_adm_password); 
    $stmt->execute(); 
    printf("Error: %d.\n", $stmt->error); 
    $stmt->bind_result($foo); 
    $stmt->fetch(); 
    var_dump($foo); 
    $stmt->close(); 
} 
+0

對象(mysqli_stmt)#3(0){} – 2013-03-05 22:54:17

+0

@JohnJr - 見我更新的評論。 – Stuart 2013-03-05 23:32:39

相關問題