簡體   English   中英

Prepared語句不返回任何結果

[英]Prepared statement returns no results

我用這個很長一段時間一直在追逐我的故事。 我無法找到此代碼的問題:

 $query = "SELECT * FROM CUSTOMER WHERE username = ?";
 $stmt = $db->prepare($query);
 $stmt->bind_param("s", $username);
 $stmt->execute();
 echo $stmt->num_rows." ".$username;`

我的數據庫中的CUSTOMER表有三列:username,pwd和email。 但是,當我將$ username變量分配給我知道存在於數據庫中的值時,不會返回任何結果。 我知道它存在是因為這個查詢

$results = $db->query("SELECT * FROM CUSTOMER WHERE username ='$username'");
echo $results->num_rows;

顯示一行,這是預期的。 有人可以告訴我為什么我准備好的陳述不會產生正確的結果嗎? 我嘗試了幾種引用的變體,而不是引用,硬編碼變量的值,但沒有任何作用。 我在大學服務器上,所以我無法控制PHP或MySQL的設置,但我不確定它與它有什么關系。 這似乎是一個編碼問題,但我看不出代碼有什么問題。

只有在執行$stmt->store_result();時才會填充num_rows $stmt->store_result();

但是,99.99%的時間你不需要檢查num_rows 您可以使用get_result()獲取結果並使用它。

$query = "SELECT * FROM CUSTOMER WHERE username = ?";
$stmt = $db->prepare($query);
$stmt->bind_param("s", $username);
$stmt->execute();
$result = $stmt->get_result();
foreach($result as $row) {
    // ...
}

如果你真的想得到num_rows,你仍然可以在mysqli_result類上訪問這個屬性。

$result = $stmt->get_result();
$result->num_rows;

您已成功執行查詢,但未對結果執行任何操作。
$stmt->execute(); ,您正在尋找$stmt->bind_result($result);

有了這個,您將可以訪問$result變量中的用戶信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM