“我正在调整一些查询,通过用绑定参数重写SQL注入来防止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"我真的看不出我做错了什么。有什么建议吗?
发布于 2016-07-12 09:02:49
您可以使用哪里作为
$array = array('Bob', 'Geoff');
$this->db->select('*');
$this->db->where('id', 7);
$this->db->where_in('author', $array);//WHERE author IN ('Bob', 'Geoff')
$this->db->get('some_table');发布于 2016-07-12 09:03:24
https://stackoverflow.com/questions/38324025
复制相似问题