<?php
$path = "mysql:host=localhost;dbname=kanjisearch;charset=utf-8";
$pdo = new PDO($path, "xxx", "xxx");
$sth = $pdo->prepare("SELECT * FROM `kanji` WHERE `kanjiName` = '$kanji'");
$sth->execute();
$results = $sth->fetchAll();
?>
Я создаю поиск PHP, в котором используются китайские символы в реальном SQL-запросе, у меня есть -> exec («SET CHARACTER SET utf8»); на pdo. И он отлично выглядит, текст, который я возвращаю, делает charects отличным, если я помещаю числа в sql, но мне нужно искать на основе кандзи, поэтому, когда я запрашиваю WHERE kanji = 一, 一 не кажется пройдите через ok, он отображает на экране отладки, но просто запрашивает запрос, результаты возвращают пустой, но когда я копирую запрос непосредственно в PHPMyAdmin, он возвращает результат.Как получить SQL-запрос с символами UTF-8?
SELECT * FROM ' kanji' WHERE' kanjiName' = '一' В в PHPMyAdmin работает просто отлично. Однако это не так, SELECT * FROM 'kanji' WHERE' kanjiName' = '$ kanji' и его то же самое – user3238825
Возможно, вам понадобится 'SET NAMES utf8' [как описано в руководстве PDO] (http: // cz1. php.net/manual/en/ref.pdo-mysql.connection.php). До PHP 5.3.6 параметр 'charset' в DNS был проигнорирован. Ну, теперь я заметил, что вы указали 'utf-8'. Попробуйте изменить его на 'utf8' (удалите дефис). MySQL не любит дефисную форму. – Palec
Каково определение столбца 'kanji.kanjiName'? Что такое кодировка и сортировка таблицы «кандзи»? Почему бы вам не подготовить запрос с 'WHERE kanjiName =?'? Затем вы будете поставлять '$ кандзи' в' $ sth-> ececute ($ kanji) '. Действительно ли '$ kanji' закодирован в UTF-8? – Palec