我正在使用Codeigniter.i想在搜索表单中使用$_POST
值中的字符串,其中可能包含特殊字符,如撇号('),(;)等。我的mysql查询如何忽略这些字符,以便我可以从数据库中选择/保存我的$_POST['search']
值吗?
每当我使用mysql_real_escape_string()函数时,我都会给:
mysql_real_escape_string(): Access denied error.
我的代码如下所示:
$query = "SELECT * FROM products WHERE
product_name='".mysql_real_escape_string($_POST['search'])."'";
$this->db->query($query);
如何在codeigniter中处理这个问题?感谢
答案 0 :(得分:1)
切勿直接在查询中使用用户输入。阅读更多关于“sql注入”和“xss”的信息。 对于codeIgnitor,请执行以下操作:
请勿使用$ _POST,而是使用input class。 $this->input->post
使用query binding,不需要mysql_real_escape_string。 例如
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));
答案 1 :(得分:0)
最好的办法是:
$query = "SELECT * FROM products WHERE product_name=?";
$this->db->query($query, array($this->input->post('search'));
在这里查看文档:{{3}}
如果您真的想通过转义来执行此操作,请查看Escaping Queries。但最好用绑定来做(如上面的例子)