我使用的是codeigniter,为了安全起见,我尝试使用查询绑定对查询进行转义,但是使用limit语法却遇到了麻烦。
在进一步解释之前,请先查看下面的查询;
我的查询
$query = "
SELECT * FROM messages
WHERE id = ?
AND public = ?
ORDER BY `messages`.`time` DESC LIMIT ?, ?
";
// Step one, escaping all queries
$bind = array($id, $public, $start, $max);
$query = $this->db->query($query, $bind);
// Step two, using the query above, and inserting it as a string into a "custom query handeler function"
return $this->db->escape_str($this->handel_all_queries($query));
问题一:
因此,使用DESC LIMIT ?, ?
给我一个错误。当它不使用查询绑定进行转义时,它可以完美地工作(例如,如果我们将限制语法表示为DESC LIMIT $start, $max
。但是显然,这样做是不安全的,我希望将其转义,就像其他方法一样)查询。
问题二:
然后,我想在另一个函数中使用“ 查询作为字符串”,该函数可以处理所有查询调用。该函数称为handel_all_queries
。
我用来尝试实现的代码是-> return $this->db->escape_str($this->handel_all_queries($query));
。我以为,$ query可以用作字符串以转移到下一个函数,但是不能。
注意 简而言之,这就是我想要做的,但是这些都没有受到保护。
$query = "
SELECT * FROM messages
WHERE id = $id
AND public = $public
ORDER BY `messages`.`time` DESC LIMIT $start, $max
";
return $this->db->escape_str($this->handel_all_queries($query));
预先感谢