停止使用的过时mysql_ *函数后,我切换到mysqli的。 但后来,我注意到,非准备语句是针对SQL注入非安全。 然后,我又改变了我的代码。
我曾是下面的函数来检查,如果在数据库中存在变量$ ID和打印标题该行的价值:
function showPostTitle($ID, $mysqli) {
$result = $mysqli -> query("SELECT ID, title FROM blog where ID = $ID");
$row = $result -> fetch_array(MYSQLI_BOTH);
echo $row['title'];
}
我改成了这样:
function showPostTitle($ID, $mysqli) {
$stmt = $mysqli -> prepare("SELECT ID, title FROM blog WHERE ID = ?");
$stmt -> bind_param("i", $ID);
$stmt -> execute();
$stmt -> bind_result($ID, $title);
$stmt -> fetch();
print_r($title);
$stmt -> free_result();
}
我的问题是:这是实现准备好的语句的正确方法是什么? 另外,我是安全的,现在从SQL注入? 非常感谢谁就将回答这个问题:)