具有特殊字符的Codeigniter查询

时间:2017-05-08 10:17:34

标签: php mysql codeigniter

我在我的项目中使用codeigniter 3。在我的数据库中,我有一个其他身份验证系统正在使用的表。当我正在搜索具有特殊字符的某些值时(数据内部/与数据相结合)我面临的问题

$query = "SELECT * FROM tablename WHERE value = '$#!"."asdasd<3ddasd"."'";

即使 $this->db->query($query); 也没有返回任何理想的输出。在echo $this->db->last_query();之后我得到了查询,它应该是这样。如果我将它复制到phpmyadmin,它会给出正确的结果。

根据SO和其他一些页面中的几个讨论,我也试过

  • $config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-!#@<$';
  • db is utf8_general_ci是服务器连接排序规则。

我放在这里的查询只是为了向您展示一个场景,我使用了活动记录。

编辑1:我使用了$ this-&gt; input-&gt; post()来获取输入。 编辑2:刚发现不适用于&#34; $#!&#34;。&#34; asdasd&lt; 3ddasd&#34; 但适用于&#34; $# !&#34;&#34; asdasd3ddasd&#34;

1 个答案:

答案 0 :(得分:1)

确保您不要忘记对帖子值进行urldecode。可能发生的是您使用$_POST而不是codeigniter函数$this->input->post();

在codeigniter函数执行时,

$_POST不会为您解码参数。

因此,请验证您传递给查询的变量是否真的是selänne而不是sel%C3%A4nne

如果是sel%C3%A4nne,请使用urldecode()$this->input->post()

来自This Question

的参考资料