我正在使用ajax在我的网站上显示动态数据!以前它是使用简单的mysqli查询完成的,现在我通过添加准备好的语句来提高我的网站的安全性,我有两个查询,一个用mysqli编写,另一个用预备语句写在mysqli查询
$sql = "SELECT DISTINCT model_trim FROM `tbl_02_models` WHERE model_year='$year' and model_name='$model' and model_make_id='$make' ";
$run = mysqli_query($db, $sql);
while ($row = mysqli_fetch_array($run)) {
if($row['model_trim']){
$data2[$i]['model_trim']=$row['model_trim'];
$i++;
}
}
这里是准备好的陈述查询
$query="SELECT DISTINCT model_trim FROM `tbl_02_models` WHERE model_year=? and model_name=? and model_make_id=?";
$stmt = $db->prepare($query);
if($stmt){
$stmt->execute();
$stmt->bind_param("iss",$year,$model,$make);
$stmt->bind_result($model_trim);
while ($stmt->fetch())
{
if($model_trim)
{
$data2[$i]['model_trim']=$model_trim;
$i++;
}
}
$stmt->close();
}
用简单的mysqli编写的查询工作正常,但是当我在预处理语句中使用相同的查询时,它返回null!任何想法?
答案 0 :(得分:1)
绑定注释后调用Execute方法。
尝试以下代码:
$query="SELECT DISTINCT model_trim FROM `tbl_02_models` WHERE model_year=? and model_name=? and model_make_id=?";
$stmt = $db->prepare($query);
if($stmt){
$stmt->bind_param("iss",$year,$model,$make);
$stmt->bind_result($model_trim);
$stmt->execute();
while ($stmt->fetch())
{
if($model_trim)
{
$data2[$i]['model_trim']=$model_trim;
$i++;
}
}
$stmt->close();
}
如需更多参考,请点击此链接 - http://www.w3schools.com/php/php_mysql_prepared_statements.asp