首页 > 解决方案 > PHP Select 波兰语字符的问题

问题描述

我在输入波兰语字符时遇到搜索问题。当我输入正常值时,搜索引擎正常工作。但是,例如,当我输入带有波兰语字符的值时ł,我什么也找不到。

还有一件事,当我$searchingVal在此选择中用波兰语字符替换普通文本时,搜索引擎可以正常工作。

$searchingVal = $ _GET ['name'];
"Select * From` customers` WHERE name LIKE '% $ searchingVal%' "

标签: php

解决方案


这听起来很像字符编码的问题。最有可能的是,您的 MySQL 字符集设置为 Latin1 或类似的。将所有内容切换到 UTF8 将消除这些问题。您可以尝试手动进行此转换,当然会以性能为代价,因此您可以比较

CONVERT(name USING utf8)

'%' . utf8_encode($searchingVal) . '%';

除此之外,您的代码对 SQL 注入是开放的,因此您应该真正使用准备好的语句,而不是类似于您的问题的 SQL,因此代码可能更像:

$sql = "SELECT *
        FROM `customers`
        WHERE CONVERT(name USING utf8) LIKE ?"

$db = new mysqli($dbHost, $dbUser, $dbPassword, $dbName);
$stmt = $db->prepare($sql);
$stmt->bind_param('s', '%' . utf8_encode($searchingVal) . '%';
$stmt->execute();

推荐阅读