动态变量的 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 bind_param 参数?