[英]Turning mysql query into prepared statement
我正在嘗試將以下查詢轉換為准備好的語句,但到目前為止我還沒有運氣。 我附上了我的嘗試之一。 我的想法是使用它來檢查之后使用mysqli_num_rows返回多少行。
$sql2=mysqli_query($bd, "SELECT address FROM member WHERE address='".$address."'");
這是我創建預准備語句的嘗試。
$ustmt = $bd->prepare("SELECT username FROM member WHERE username = ?");
$ustmt->bind_param("s", $username);
$sql2 = $ustmt->execute();
這個對嗎? 如果是這樣,該如何檢查返回到$ sql2的行數?
是的,您的准備和執行是正確的。
execute調用返回一個boolean
值,如果成功,則返回true
,否則返回false
(如果為false
,則將使用錯誤消息設置$stmt->error
屬性)。
值得在繼續之前進行檢查,因為如果它為假,將沒有結果。
與准備工作相同,如果$mysqli->prepare(...)
調用返回false,則將使用錯誤消息設置$mysqli->error
。
執行后,可以通過$num_rows
屬性(如果是SELECT
語句)或$affected_rows
屬性(在其他情況下)獲取受影響的行數。
echo $stmt->num_rows;
或者,您可以使用get_result()
方法從語句中獲取mysqli_result
對象。
mysqli_result
對象包含公共字段$num_rows
,因此您可以通過以下方式檢查行數:
$res = $stmt->get_result();
echo $res->num_rows;
對於mysqli_result
對象中的其他方法,我建議檢查docs 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.