我有一个非常简单的查询在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')");
任何变量都没有什么特别之处 - 它们只是字符串。查询绑定需要什么才能在这里工作?
答案 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