我遇到了一个奇怪的问题。
我有这段代码
$ topic包含来自URI / trends / about /海贼_的“海贼_(ONE_PIECE)”(ONE_PIECE) 我检查了回应$ topic并打印出海贼_(ONE_PIECE)
$sql="SELECT wti.redirect_title FROM wikipedia_timelines AS wti WHERE wti.redirect_title = ? LIMIT 1";
$query = $this->db->query($sql,array($topic));
if ($row = $query->result_array())
{
问题是此代码将$ row返回为空数组
Array
(
[0] => Array
(
[redirect_title] =>
)
)
但是,如果我使用此代码(替换?与$ topic的实际值,它可以完美地运行
$sql="SELECT wti.redirect_title FROM wikipedia_timelines AS wti WHERE wti.redirect_title = '海賊_(ONE_PIECE)' LIMIT 1";
$query = $this->db->query($sql,array($topic));
if ($row = $query->result_array())
{
更换?使用{$ topic}也无法使其正常运行。
仅当$ topic包含()时才会出现此问题,如果它没有()它可以正常工作
我想知道问题是什么。 我想URI编码存在问题,但我不确定如何修复它。
请帮帮我。 谢谢
答案 0 :(得分:1)
我很确定你的问题是查询绑定会逃避你的输入值(我猜它不喜欢括号)。
尝试使用连接构建sql字符串,例如:
$sql = "SELECT wti.redirect_title FROM wikipedia_timelines AS wti WHERE wti.redirect_title = '".$topic."' LIMIT 1";
$query = $this->db->query($sql);
看看是否有帮助。或者尝试使用活动记录类,我一直将它用于日文字符,它似乎工作正常。
//编辑:
要在URI中添加括号,请尝试更改application/config.config.php
并设置
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-()';
也尝试urldecode($topic);
让汉字出来。