查询绑定在CodeIgniter 3中不起作用

时间:2015-06-24 09:59:04

标签: php mysql codeigniter

我有一个非常简单的查询在CI中失败:

$sql = "INSERT INTO tenant (name, image, url) VALUES (?, ?, ?)";
$this->db->query($sql, $name, $image, $url);

当我尝试执行此查询时,我最终得到以下错误:

  

发生数据库错误

     

错误号码:1064

     

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近'?,?,?)'在第1行

     

INSERT INTO tenant(name,image,url)VALUES(?,?,?)

     

文件名:models / Tenant.php

     

行号:107

所有使用的变量都是正确定义的,我可以通过将其转换为此来使其工作没有问题:

$this->db->query("INSERT INTO tenant (name, image, url) VALUES ('$name', '$image', '$url')");

任何变量都没有什么特别之处 - 它们只是字符串。查询绑定需要什么才能在这里工作?

2 个答案:

答案 0 :(得分:5)

查看有关query binding的文档。 query有两个论点。您的绑定应该在一个数组中。

$sql = "INSERT INTO tenant (name, image, url) VALUES (?, ?, ?)";
$this->db->query($sql, array($name, $image, $url));

答案 1 :(得分:0)

您必须以数组形式传递第二个参数:

  

查询绑定:通过让系统将查询放在一起,绑定可以简化查询语法。请考虑以下示例

$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));
  

查询中的问号会自动替换为   查询函数

的第二个参数中数组中的值

详细信息read here