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绑定的参数只会确保发送到数据库的内容是它所期望的类型。如果类型不正确,它不会中止 - 这仍然是您的应用程序的责任。 –