【问题标题】:Php & Mysqli query with dynamic variable not working. Trying to replace "?" in query动态变量的 PHP & Mysqli 查询不起作用。试图替换“?”在查询中
【发布时间】:2025-12-31 13:00:12
【问题描述】:

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

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

任何帮助将不胜感激。如果您想知道这是我试图使其动态的代码,而不仅仅是拉取表格中的所有图像: 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;
                };
            }
        }
    }

【问题讨论】:

    标签: php sql mysqli


    【解决方案1】:

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

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

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

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

    希望这能让您对这里发生的事情有足够的了解,以便更改代码以完全按照您的意愿行事。

    【讨论】:

    • 谢谢,我会查看文档。我将该参数更改为动态、静态和全局变量,但仍然出现错误。也许我错过了其他东西。但是谢谢,我会再次查看文档。