动态变量的 PHP & Mysqli 查询不起作用。试图替换“?”在查询中

Posted

技术标签:

【中文标题】动态变量的 PHP & Mysqli 查询不起作用。试图替换“?”在查询中【英文标题】:Php & Mysqli query with dynamic variable not working. Trying to replace "?" in query 【发布时间】:2016-04-29 02:33:22 【问题描述】:

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

假设 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;
                ;
            
        
    

【问题讨论】:

【参考方案1】:

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

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

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

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

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

【讨论】:

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

以上是关于动态变量的 PHP & Mysqli 查询不起作用。试图替换“?”在查询中的主要内容,如果未能解决你的问题,请参考以下文章

php/mysqli 查询未执行某些查询且没有错误

PHP MYSQLI 查询

如何动态回显php $ _GET变量的多个结果

如何在 PHP 中动态绑定 mysqli bind_param 参数?

如何在 PHP 中动态绑定 mysqli bind_param 参数?

PHP - MySQLi 处理查询两次或错误