Ошибки PHP SQLite - PullRequest
       1

Ошибки PHP SQLite

0 голосов
/ 28 сентября 2010

Я использую cURL для извлечения выбранных данных из веб-страниц, до недавнего времени я записывал вывод в текстовые файлы, но теперь, когда я лучше понимаю MySQL / SQLite, я решил сделать полную переключиться на реляционные базы данных, просто делает управление данными намного проще.

Но я столкнулся с парой проблем, которые мне не удалось решить самостоятельно:

1) РЕДАКТИРОВАТЬ: проблема решена путем простого использования sqlite_escape_string.

Однако осталась другая проблема:

2) Кажется, что содержимое, вставленное в базу данных, имеет неправильную кодировку, например «Становится», «становится» и так далее. Это происходит ТОЛЬКО во время обработки SQLite, если я в противном случае выводю те же самые данные или сохраняю их в текстовый файл, кодировка (UTF-8) сохраняется и все отображается правильно.

Я пытался использовать utf8_encode (); до вставки, но это только портит вещи еще больше. Я должен отметить, что ручное редактирование после вставки работает, поэтому проблема явно не в самой БД, а в том, как в нее вставляются данные

Вот текущий код:

$name = sqlite_escape_string($name);
$category = sqlite_escape_string($category);
$html = sqlite_escape_string($html);

$db = new SQLiteDatabase('DB.sqlite');
$query = 'INSERT INTO Table (Name, Category, Html)' . "VALUES ('$name', '$category', '$html')";

$db->queryExec($query);

Очевидно, у других возникают похожие проблемы с этим:

Ссылка
Ссылка

1 Ответ

0 голосов
/ 28 сентября 2010
$insert = compact('name','category','html');
$insert = array_map('sqlite_escape_string',$insert);
$insert = '"'. implode('", ',$insert).'"';

или однострочник:

$insert = '"'. implode('", ', array_map('sqlite_escape_string', compact('name','category','html'))).'"';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...