php - PHP Select 波兰语字符的问题
问题描述
我在输入波兰语字符时遇到搜索问题。当我输入正常值时,搜索引擎正常工作。但是,例如,当我输入带有波兰语字符的值时ł
,我什么也找不到。
还有一件事,当我$searchingVal
在此选择中用波兰语字符替换普通文本时,搜索引擎可以正常工作。
$searchingVal = $ _GET ['name'];
"Select * From` customers` WHERE name LIKE '% $ searchingVal%' "
解决方案
这听起来很像字符编码的问题。最有可能的是,您的 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();
推荐阅读
- c# - 使用从 mysql 到 raport/pdf/word C# 的数据创建表的问题
- excel - 如何删除具有零的特定多个列?
- spring-boot - Spring数据JPA中按时间戳排序
- javascript - 如何从 node.js 连接到 sql DB?
- laravel - Laravel 数据映射
- android - 带有 countryISO 的 PhoneNumberFormattingTextWatcher 在 api 级别 21 以下不可用
- elasticsearch - 使用 Nest 7.x 重新创建 ElasticSearch 索引
- vb.net - 如何在不重置其列属性的情况下对数据表进行排序?
- php - 没有作曲家的谷歌登录页面PHP
- html - CSS 照片库 wGrid - 间隙问题 // 图像周围的边距