Таинственные дубликаты записей в таблице SQLite при использовании INSERT - PullRequest
1 голос
/ 10 февраля 2012

До того, как я использовал 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.

Возможно, кто-то сможет проверить мой код на своей платформе и скажет, есть ли у него такая же проблема.

...