对于我目前的项目,我想为MySQL中的字典数据库创建一个浏览器。这些单词包含特殊字符,我使用的是UTF-8编码。到目前为止,我已经进行了一次功能“搜索”,查找用户的输入并输出相关信息。
这是我遇到问题的地方。如果用户输入所有普通字符,则代码可以正常工作。但是,如果他们输入带有任何特殊字符的内容,则查询始终返回null。
以下是相关代码:
HTML页面:
<html>
<body>
<form action="test.php" method="get">
Search dictionary: <input type="text" name="search">
<input type="submit" value="Submit">
</form>
<br>
</body>
</html>
PHP脚本(摘录):
<?php
$q=$_GET['search'];
$id = "";
if (strlen($q) > 0) {
// connects to DB
$db = new PDO('mysql:host=localhost;dbname=***', '***', '***');
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
$query="SELECT DISTINCT e.lexeme_id, l.posc
FROM entry e
INNER JOIN lexeme l
USING (lexeme_id)
WHERE e.lemma = '".$q."'";
$stmt=$db->prepare($query);
$stmt->execute();
foreach ($stmt as $row) {
$id = $row['lexeme_id'];
$posc = $row['posc'];
//output results here
echo "<h1>".$q."</h1><br/>";
echo "<h2>".$posc."</h2><br/>";
}
}
?>
如果我在搜索框中输入“man”,则会提取相应的数据。但是,如果我搜索“maðr”,我就没有结果。但是,如果我在MySQL Workbench中尝试相同的查询,我会得到正确的输出。我已经让脚本打印出它使用的查询,并且它与应该的内容相匹配。
TL; DR:以下查询在MySQL Workbench中运行文件,但是当我通过PHP脚本在我的HTML页面上调用它时没有 -
SELECT DISTINCT e.lemma
FROM entry e
INNER JOIN lexeme l
USING (lexeme_id)
WHERE e.lexeme_id = "maðr"
知道可能出现什么问题吗?谢谢!
答案 0 :(得分:0)
header('Content-type: text/plain; charset=utf-8');
在PHP脚本中将其设为UTF8