БД Codeigniter или проблема URI с юникодом - PullRequest
0 голосов
/ 12 апреля 2011

У меня странная проблема.

У меня есть этот код

$ тема содержит «海賊 _ (ONE_PIECE)» из URI / trend / about / 海賊 _ (ONE_PIECE) Iпроверяется на вывод $ 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, но я не уверен, как ее исправить

Пожалуйста, помогите мне. Спасибо

1 Ответ

1 голос
/ 12 апреля 2011

Я почти уверен, что ваша проблема в том, что привязка запроса ускользает от ваших входных значений (я предполагаю, что она не похожа на квадратные скобки).

попробуйте создать строку 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);, чтобы вывести кандзи.

...