我在我的项目中使用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~%.:_\-!#@<$';
utf8_general_ci
是服务器连接排序规则。我放在这里的查询只是为了向您展示一个场景,我使用了活动记录。
编辑1:我使用了$ this-&gt; input-&gt; post()来获取输入。 编辑2:刚发现不适用于&#34; $#!&#34;。&#34; asdasd&lt; 3ddasd&#34; 但适用于&#34; $# !&#34;&#34; asdasd3ddasd&#34;
答案 0 :(得分:1)
确保您不要忘记对帖子值进行urldecode。可能发生的是您使用$_POST
而不是codeigniter函数$this->input->post();
$_POST
不会为您解码参数。
因此,请验证您传递给查询的变量是否真的是selänne而不是sel%C3%A4nne
如果是sel%C3%A4nne
,请使用urldecode()
或$this->input->post()