【发布时间】:2017-10-06 07:21:45
【问题描述】:
我正在为我的项目使用 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->input->post() 来获取输入。 编辑 2:刚刚发现不适用于 "$#!"."asdasd 但适用于 "$#!"."asdasd3ddasd"
【问题讨论】:
-
$#!肯定需要在单引号字符串内 -
因为
SELECT * FROM tablename WHERE value = $#!'asdasd<3ddasd'不是一个有效的查询 -
啊,来吧。 发表评论后不修复代码
-
这里的查询拼写错误。
-
问题不在于查询语法。这就是我修复它的原因。我的原始查询没问题,因为它适用于没有特殊字符的其他行。在给出 SO 时,我修改了查询,这就是为什么这里发生错误:D。还是谢谢你指点。
标签: php mysql codeigniter