2011-04-12 53 views
0

我有一个奇怪的问题。unicode Codeigniter DB或URI问题

我有这样的代码

$主题包含 “海贼_(ONE_PIECE)” 从URI /趋势/约/海贼_(ONE_PIECE) 我检查呼应$主题,它打印出海贼_(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()) 
{ 

的问题是,这个代码返回$行是一个空数组

Array 
(
    [0] => Array 
     (
      [redirect_title] => 
     ) 

) 

但是,如果我用这个代码(以$话题的实际值替换? ,它可以很好地工作

$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()) 
{ 

替换?与{$主题}不会使它工作太。当$主题包含了(),如果它不具有(),它工作正常

我不知道什么是问题只发生

此问题。 我想有一个URI编码的问题,但我不知道如何解决它。

请帮帮我。 谢谢

+0

'$ this-> db-> last_query()'在返回空数组之后输出的是什么? – 2011-04-12 15:25:04

+0

它实际上返回正确的sql查询。 – bbnn 2011-05-10 12:59:18

回答

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);得到汉字了。

+0

对于迟到的回复,我很抱歉。不,它仍然不起作用:(它很奇怪.. – bbnn 2011-04-15 23:22:05

+0

它也不能在MySQL命令行上工作,但它实际上在mySQL客户端应用程序(sequelpro)中工作,就像mysqlmyadmin – bbnn 2011-04-15 23:27:31

+0

尝试更改'application/config.config。 php'并设置$ config ['allowed_uri_chars'] ='az 0-9〜%。:_ \ - ()';'也尝试'urldecode($ topic);' – icchanobot 2011-04-16 01:58:51