1
我看着MySqli中準備好的語句,從過濾的角度來看,一切正常(personID必須是數字)。但是,當我使用store_result(循環記錄)時,過濾似乎停止。例如:MySqli循環存儲結果
$personID = 4;
if ($stmt = $mysqli->prepare("SELECT personName FROM people WHERE personID>?")) {
$stmt->bind_param("s",$personID);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($personName);
//$stmt->fetch();
//$stmt->fetch_row();
while($stmt->fetch()){
echo $personName."<br /><br />";
}
$stmt->close();
}
這工作正常,但如果我設置:
$personID = 'bbccc';
它帶回的所有記錄,也就是說,它停止類型檢查和帶回的所有記錄。那麼如何維護過濾?
感謝
感謝邁克爾,有道理,但我必須鍵入檢查所有參數?我試過$ stmt-> bind_param(「我」,$ personID);但是php \ mysqli仍然試圖用相同的結果解析一個int。再次感謝。 – user1002120
@ user1002120綁定的參數只會確保發送到數據庫的內容是它所期望的類型。如果類型不正確,它不會中止 - 這仍然是您的應用程序的責任。 –