将 utf8_decode() 和 urldecode() 应用于带重音的用户输入后,SELECT 查询无法找到行

问题描述 投票:0回答:1

我只是想在 CodeIgniter 中进行基本搜索。

控制器

$brand = $this->uri->segment(2);
$brand = utf8_decode(urldecode($brand));
$search['type'] = 5;
$search['title'] = $brand;
$this->data['deal_brand'] = $this->manage_m->search($search);
print_r($this->data['deal_brand']);

型号

function search($search)
{
    $query = $this->db->get_where('manage', $search);
    return $query->first_row();
}

搜索适用于以下内容

www.mydomain.com/deal/audi

不适用于

www.mydomain.com/deal/citroën

当我得到最后一个查询时,它会打印

SELECT * FROM (`manage`) WHERE `type` = 5 AND `title` = 'citroën'

查询看起来正确,但不起作用。当我复制它并在 mysql 服务器中运行它或通过如下所示的静态查询运行它时,它就可以工作了

$query = $this->db->query("SELECT * FROM (`manage`) WHERE `type` = 5 AND `title` = 'citroën'");
print_r($query->result());
php mysql codeigniter character-encoding multibyte-characters
1个回答
1
投票

你的问题是这样的:utf8_decode

来自文档:此函数将假设为 UTF-8 编码的数据解码为 ISO-8859-1。

这显然不是你想要做的,你的整个软件都是UTF-8,没有理由将其转换为ISO-8859-1。

© www.soinside.com 2019 - 2024. All rights reserved.