zencart网站后台订单中搜索中文出现乱码

在zencart 1.3.9及以前版本中,可能会有以下这样的问题。

在网站后台订单中搜索中文,或日文等非英文字符,会出现乱码。

warning: an error occurred,please refresh the page and try again.fatal err: 1271: Illegal mix of collations for operation ‘like’::select count(*) as total from (orders status s,orders o) left join orders total ot on …..

如下图。

《zencart网站后台订单中搜索中文出现乱码》

经过观察,该问题出现在mysql5.5及以上版本的数据库的情况下。

原因在于MySQL在查找字符串的时候大小写不敏感,字符集默认使用ISO-8859,在转换过程中会出现问题。

 

解决方法

需要将您网站后台中的orders.php文件中,以下代码部分做修改.
例如您abc.com该站点的则修改对应网站后台目录
/home/www.abc.com/public_html/admin/orders.php该文件.

$search = ” and (op.products_model like ‘%” . $keywords . “%’ or op.products_name like ‘” . $keywords . “%’)”;
$search = ” and (o.customers_city like ‘%” . $keywords . “%’ or o.customers_postcode like ‘%” . $keywords . “%’ or o.date_purchased like ‘%” . $keywords . “%’ or o.billing_name like ‘%” . $keywords . “%’ or o.billing_company like ‘%” . $keywords . “%’ or o.billing_street_address like ‘%” . $keywords . “%’ or o.delivery_city like ‘%” . $keywords . “%’ or o.delivery_postcode like ‘%” . $keywords . “%’ or o.delivery_name like ‘%” . $keywords . “%’ or o.delivery_company like ‘%” . $keywords . “%’ or o.delivery_street_address like ‘%” . $keywords . “%’ or o.billing_city like ‘%” . $keywords . “%’ or o.billing_postcode like ‘%” . $keywords . “%’ or o.customers_email_address like ‘%” . $keywords . “%’ or o.customers_name like ‘%” . $keywords . “%’ or o.customers_company like ‘%” . $keywords . “%’ or o.customers_street_address like ‘%” . $keywords . “%’ or o.customers_telephone like ‘%” . $keywords . “%’ or o.ip_address like ‘%” . $keywords . “%’)”;

凡是like 则改为 like BINARY即可解决.

 

点赞

发表评论