我使用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!任何想法?
在绑定注释后调用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