gpt4 book ai didi

php - 导致MySQL失败的特殊字符

转载 作者:行者123 更新时间:2023-11-28 03:31:31 25 4
gpt4 key购买 nike

对于我当前的项目,我想为我在 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"

知道可能出了什么问题吗?谢谢!

最佳答案

header('Content-type: text/plain; charset=utf-8');

在您的 PHP 脚本中将其设为 UTF8

关于php - 导致MySQL失败的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17461763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com