涉及限制语法时如何在codeigniter中绑定查询

时间:2018-07-12 04:56:10

标签: mysql codeigniter

我使用的是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));

预先感谢

0 个答案:

没有答案