Php&;带有动态变量的Mysqli查询不起作用.试图替换“";在查询中


Php & Mysqli query with dynamic variable not working. Trying to replace "?" in query

下面的代码进行查询,然后循环这些结果。我很难理解查询中的"?"是什么,以及如何使"?"动态。

它假定name="?"。我变了?添加到我在函数$ad_id中添加的变量,但仍然不起作用。我基本上只需要查询DB 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;
                };
            }
        }
    }

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

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

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

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

希望这能让您对这里发生的事情有足够的了解,从而更改代码以实现您想要的目的。