До того, как я использовал PDO, он работал нормально, но у меня были проблемы со вставкой картинок.Теперь я перешел на SQLite3 и теперь картинки хранятся правильно.Но я испытываю странную проблему с SQLite3.Каждая команда INSERT INTO
выполняется дважды.И это касается только INSERT
, потому что у меня не было проблем с UPDATE
или DELETE
.
Это мой тестовый скрипт
<code><?php
require_once('class.DatabaseQuery.php');
$db = new DatabaseQuery();
$sql = 'INSERT INTO Bezeichnungen(Bezeichnung_de,Bezeichnung_en,Bezeichnung_it) values("test","test","test");';
$result = $db->ExecuteQuery($sql);
echo "<pre>";
print_r($result);
echo "
";?>
Это мой класс базы данных:
<code><?php
class DatabaseQuery {
private $_handle;
public function ExecuteQuery($sql, $params = array())
{
echo $sql;
echo "<strong>execute Query params</strong><pre>";
print_r ($params);
echo "
";количество эхо-сигналов ($ params);// установить новое соединение, если оно недоступно if ($ this -> _ handle == null) $ this-> Connect ();// сделать подготовленный оператор $ query = $ this -> _ handle-> prepare ($ sql);// добавляем значения в подготовленный оператор в зависимости от типа foreach ($ params as $ key => $ value) {if (is_int ($ value)) {$ query-> bindValue (':'. $ key, $ value, SQLITE3_INTEGER);} else if (is_null ($ value)) {$ query-> bindValue (':'. $ key, $ value, SQLITE3_NULL);} else if (strpos ($ value, "home / www /")! == false) {$ value = file_get_contents ($ value);$ query-> bindValue (':'. $ key, $ value, SQLITE3_BLOB);$ value = "X '".strtoupper (bin2hex ($ значение));} else {$ query-> bindValue (':'. $ key, $ value, SQLITE3_TEXT);}} $ result = $ query-> execute ();// получить все результаты while ($ row = $ result-> fetchArray (SQLITE3_ASSOC)) {$ res [] = $ row;} // var_dump ($ x);вернуть $ res;} публичная функция Connect () {$ this -> _ handle = new SQLite3 ("database.db");} публичная функция Disconnect () {// закрыть соединение с базой данных $ this -> _ handle-> close ();}}?>
И это оператор create моей таблицы
CREATE TABLE Bezeichnungen
(
_id INTEGER PRIMARY KEY,
Bezeichnung_de TEXT,
Bezeichnung_en TEXT,
Bezeichnung_it TEXT
)
Либо я использую SQLite3 неправильно, либо в используемой библиотеке есть ошибка.
Я использую PHP 5.3.9, модуль SQLite3 версии 0.7-dev и библиотеку SQLite 3.7.7.1.
Возможно, кто-то сможет проверить мой код на своей платформе и скажет, есть ли у него такая же проблема.