Php& Mysqli查询与动态变量不起作用。试图取代"?"在查询中

时间:2016-04-29 02:33:23

标签: php sql mysqli

下面的代码进行查询,然后循环遍历这些结果。我很难理解"?"在那个查询中以及如何制作"?"动态的。

它假设name ="?"。我改变了 ?我在函数$ ad_id中添加的变量仍然不起作用。我基本上只需要查询数据库只有WHERE name =一个变量。但这个简单的解决方案不起作用。评论的行是我替换的。

任何帮助将不胜感激。如果你想知道这是我试图制作动态的代码,而不仅仅是拉动表格中的所有图像: https://github.com/blueimp/jQuery-File-Upload/wiki/PHP-MySQL-database-integration

protected function set_additional_file_properties($file) {
        parent::set_additional_file_properties($file);
        if ($_SERVER['REQUEST_METHOD'] === 'GET') {
            $ad_id = '1';
            //$sql = 'SELECT `id`, `type`, `title`, `description` FROM `'
                //.$this->options['db_table'].'` WHERE `name`=?';
            $sql = 'SELECT id, type, title, description FROM '.$this->options['db_table'].' WHERE name = '.'$ad-id'.';
            $query = $this->db->prepare($sql);
            $query->bind_param('s', $file->name);
            $query->execute();
            $query->bind_result(
                $id,
                $type,
                $title,
                $description
            );
            while ($query->fetch()) {
                if ($description == $ad_id){
                    $file->id = $id;
                    $file->type = $type;
                    $file->title = $title;
                    $file->description = $description;
                };
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

在此示例中,SQL查询使用绑定参数。这意味着您为SQL查询创建了字符串,并为每个变量放置一个占位符 - 占位符是'?'你提到的角色。然后是以下两行:

$query = $this->db->prepare($sql);
$query->bind_param('s', $file->name);

第一行将查询发送到数据库,第二行将需要绑定的参数发送到占位符站点(这些问号位于查询字符串中)。因此,如果要更改插入查询的变量,则应更改bind_param调用。

查看bind_param的文档,但基本上是''指定字符串参数,第二个参数是变量本身。

希望这能让您充分了解这里发生的事情,以便更改代码以完全按照您的意愿进行操作。