【问题标题】:query execution with prepared statements not working使用准备好的语句执行查询不起作用
【发布时间】:2017-03-15 16:00:46
【问题描述】:

我正在使用 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!有什么想法吗?

【问题讨论】:

  • 您需要在绑定参数之后执行...
  • 今天我看到了一个天使!谢谢@JonStirling
  • 你能在单独的评论中写下你的答案,以便我标记它吗?

标签: php mysqli


【解决方案1】:

绑定 cmets 后调用 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

【讨论】:

    猜你喜欢
    • 2017-01-31
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    相关资源
    最近更新 更多