kirill538
Новичок
Косяк с insert sqlite3 (php 5.3.2, pdo_sqlite). Баг PDO или ошибка в ДНК ?
Анамнез:
CREATE TABLE test (id INTEGER PRIMARY KEY, title VARCHAR(255), pub BOOLEAN);
...
$utf8string = 'Некие русские буковки';
$db->query('INSERT INTO test (title) VALUES (?)', $utf8string);
В базе лежит строка в utf8.
echo $db->selectValue('SELECT title FROM test WHERE id = 1');
Видим фразу на русском языке.
Слегка изменим:
$db->query('INSERT INTO test (title, pub) VALUES (?, ?)', $utf8string, true);
Опс. В базе лежит строка в кодировке, не поддающейся опознанию
echo $db->selectValue('SELECT title FROM test WHERE id = 1');
Видим крякозябры непонятного типа и кодировки.
Кодировка файла скрипта utf8. php собран с --enable-sqlite-utf8.
Запросы выполняются через PDO, версия библиотеки sqlite 3.6.22
PRAGMA charset установленo в utf8.
Ок. Убираем кириллицу.
$db->query('INSERT INTO test (title, pub) VALUES (?, ?)', 'pure english', true);
echo $db->selectValue('SELECT title FROM test WHERE id = 1');
Блин. Опять крякозябры. Дело не в utf8 %(
Куда копать (более конкретный адрес, чем гугл) ?
-~{}~ 28.03.10 05:34:
Ура. Ошибка в ДНК Нефига по ночам работать.
В тестах bindParam получал скаляр, а ему хочется переменную.
Вывод ошибок подавлялся логгером phpunit.
Модераторы, убейте тему, плиз.
Анамнез:
CREATE TABLE test (id INTEGER PRIMARY KEY, title VARCHAR(255), pub BOOLEAN);
...
$utf8string = 'Некие русские буковки';
$db->query('INSERT INTO test (title) VALUES (?)', $utf8string);
В базе лежит строка в utf8.
echo $db->selectValue('SELECT title FROM test WHERE id = 1');
Видим фразу на русском языке.
Слегка изменим:
$db->query('INSERT INTO test (title, pub) VALUES (?, ?)', $utf8string, true);
Опс. В базе лежит строка в кодировке, не поддающейся опознанию
echo $db->selectValue('SELECT title FROM test WHERE id = 1');
Видим крякозябры непонятного типа и кодировки.
Кодировка файла скрипта utf8. php собран с --enable-sqlite-utf8.
Запросы выполняются через PDO, версия библиотеки sqlite 3.6.22
PRAGMA charset установленo в utf8.
Ок. Убираем кириллицу.
$db->query('INSERT INTO test (title, pub) VALUES (?, ?)', 'pure english', true);
echo $db->selectValue('SELECT title FROM test WHERE id = 1');
Блин. Опять крякозябры. Дело не в utf8 %(
Куда копать (более конкретный адрес, чем гугл) ?
-~{}~ 28.03.10 05:34:
Ура. Ошибка в ДНК Нефига по ночам работать.
В тестах bindParam получал скаляр, а ему хочется переменную.
Вывод ошибок подавлялся логгером phpunit.
Модераторы, убейте тему, плиз.