使 PDO 支持的自动建议搜索框使用 UTF8 数据
Make PDO powered autosuggest search box work with UTF8 data
所以有一个关于使用自动提示制作搜索框的很棒的教程 here。它在我的 Wordpress MySQL 数据库上运行良好。
但是问题出在日文字符上...我在 PHP 中添加了以下行:$conn->exec("set names utf8");
这让我能够正确地 显示日本的结果,但是搜索功能不能正常工作:
它只显示了整个table的所有结果,而不是过滤后的结果。
这是我的完整代码:
if (isset($_GET['term'])){
$return_arr = array();
try {
$conn = new PDO("mysql:host=".DB_SERVER.";port=8889;dbname=".DB_NAME, DB_USER, DB_PASSWORD."");
$conn->exec("set names utf8");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare('SELECT supplier_company FROM wp_teleapo_supplier');
$stmt->execute(array('term' => '%'.$_GET['term'].'%'));
while($row = $stmt->fetch()) {
$return_arr[] = $row['supplier_company'];
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
/* Toss back results as json encoded array. */
echo json_encode($return_arr);
}
问题出在您的 SQL 语句中,您没有 where
子句
$stmt = $conn->prepare('SELECT supplier_company FROM wp_teleapo_supplier WHERE `term` LIKE ?');
$stmt->execute(array('%'.$_GET['term'].'%'));
所以有一个关于使用自动提示制作搜索框的很棒的教程 here。它在我的 Wordpress MySQL 数据库上运行良好。
但是问题出在日文字符上...我在 PHP 中添加了以下行:$conn->exec("set names utf8");
这让我能够正确地 显示日本的结果,但是搜索功能不能正常工作:
它只显示了整个table的所有结果,而不是过滤后的结果。
这是我的完整代码:
if (isset($_GET['term'])){
$return_arr = array();
try {
$conn = new PDO("mysql:host=".DB_SERVER.";port=8889;dbname=".DB_NAME, DB_USER, DB_PASSWORD."");
$conn->exec("set names utf8");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare('SELECT supplier_company FROM wp_teleapo_supplier');
$stmt->execute(array('term' => '%'.$_GET['term'].'%'));
while($row = $stmt->fetch()) {
$return_arr[] = $row['supplier_company'];
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
/* Toss back results as json encoded array. */
echo json_encode($return_arr);
}
问题出在您的 SQL 语句中,您没有 where
子句
$stmt = $conn->prepare('SELECT supplier_company FROM wp_teleapo_supplier WHERE `term` LIKE ?');
$stmt->execute(array('%'.$_GET['term'].'%'));