현재 프로젝트에서는 MySQL에있는 사전 데이터베이스 용 브라우저를 만들고 싶습니다. 이 단어에는 특수 문자가 포함되어 있으며 UTF-8 인코딩을 사용하고 있습니다. 지금까지 사용자의 입력을 조회하고 관련 정보를 출력하는 작동하는 "검색"을 만들었습니다.MySQL 오류를 일으키는 특수 문자
여기 내가 문제를 다루는 곳입니다. 사용자가 모든 일반 문자를 입력하면 코드가 제대로 작동합니다. 그러나 특수 문자가 포함 된 값을 입력하면 쿼리는 항상 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/>";
}
}
?>
하면 검색 창에 내가 입력 "사람", 적절한 데이터
다음은 관련 코드입니다 당겨 요. 그러나 "maðr"을 검색하면 결과가 없습니다. 그러나 MySQL Workbench에서 동일한 쿼리를 시도하면 정확한 결과를 얻을 수 있습니다. 나는 스크립트가 사용하는 쿼리를 출력하고 그것이 무엇이되어야 하는지를 일치시켰다.
TL; DR : 다음 쿼리는 MySQL의 워크 벤치에서 파일을 실행하지만, 내가 잘못 갈 수 무슨 PHP는 스크립트
SELECT DISTINCT e.lemma
FROM entry e
INNER JOIN lexeme l
USING (lexeme_id)
WHERE e.lexeme_id = "maðr"
어떤 생각을 통해 내 HTML 페이지를 호출 할 때? 감사! 당신의 PHP 스크립트에서
가 UTF8 인코딩되는 모든 스크립트 (PHP 스크립트, HTML 파일 및 다른 모든 것들) 확인 UTF8 확인합니다. – Bjoern
지금 당장은 여기에 게시 한 내용을 실행하고 있습니다. 인코딩을 적절하게 설정 했습니까? – user1261711
파일에서이 내용을 확인해야합니다. 많은 코드 편집기 (예 : notepad ++)에는 "utf8로 변환"또는 이와 유사한 옵션이 있습니다. – Bjoern