Я пытаюсь выполнить запрос в PHP, используя PDO на Sqlite, который может содержать специальные символы (Ä, Ö, Ü, …). Но я не могу выполнить запрос. PHP возвращает следующую ошибку:
array (3) {[0] => string (5) «00000» [1] => int (1) [2] => string (35) «нераспознанный токен:» ‘MÄÖÜ123DE «»}
Я попытался выполнить собственный запрос, а также использовать подготовивший оператор и значения привязки.
$statement = "select * from list where param = ? and value = ?";
$stmt = $db->prepare($statement);
$stmt->bindValue(1, $setparam);
$stmt->bindValue(2, $val,PDO::PARAM_STR);
$stmt->execute();
Родной путь:
$statement = "select * from list where param = '".$setparam."' and value = '".$val."'";
$res = $db->query($statement);
Оба способа возвращают одну и ту же ошибку. Я использую XAMPP 1.8.3-5. Используемое кодирование UTF-8.
В sqlitestudio запрос работает хорошо.
РЕДАКТИРОВАТЬ Выполнить PDO:
$db = new PDO("sqlite:database/lists.db","","",array(
PDO::ATTR_PERSISTENT => true));
Используемое мета исполнение UTF-8 HTML:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Случается, что база данных по-прежнему настроена на использование ISO-8859-15.
Попробуйте выполнить этот запрос раньше других, чтобы исправить настройки кодировки.
SET NAMES "utf8"
Других решений пока нет …