“我正在调整我的一些查询,以通过使用绑定参数重写它们来防止 SQL 注入。这对于简单的查询来说足够简单:
例如
// Old code
$sql = "SELECT * FROM some_table WHERE id = 4 AND author = 'Bob'";
$this->db->query($sql);
// New Bound SQL query
$sql = "SELECT * FROM some_table WHERE id = ? AND author = ?";
$this->db->query($sql, array(4, 'Bob'));
我无法让它适用于使用 IN 运算符的查询。正如这里所建议的,我尝试了以下方法:
// Old code
$sql = "SELECT * FROM some_table WHERE id = 7 AND author IN ('Bob','Geoff)";
$this->db->query($sql);
// New Bound SQL query
$sql = "SELECT * FROM some_table WHERE id = ? AND author IN ?";
$this->db->query($sql, array(7, array('Bob','Geoff')));
但是,此查询失败并显示错误消息:
“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以在第 6 行的 'Array' 附近使用正确的语法”
似乎查询已更改为:
"SELECT * FROM some_table WHERE id = '5' AND author IN Array"
我真的看不出我做错了什么。有什么建议么?