使用预准备语句查询执行无效

时间:2016-11-02 10:59:44

标签: php mysqli

我正在使用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!任何想法?

1 个答案:

答案 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