使用INSERT时SQLite表中的神秘重复条目

时间:2012-02-10 14:57:41

标签: sql database sqlite insert

在我使用PDO之前它工作正常但我在插入图片方面遇到了问题。现在我切换到SQLite3,现在正确存储图片。但是我遇到了SQLite3的奇怪问题。每个INSERT INTO命令都完成两次。这仅涉及INSERT,因为我对UPDATEDELETE没有任何问题。

这是我的测试脚本

<?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 "</pre>";
?>

这是我的数据库类:

<?php
    class DatabaseQuery {
        private $_handle;

        public function ExecuteQuery($sql, $params = array())
        {

            echo $sql;
            echo "<strong>execute Query params</strong><pre>";
            print_r ($params);
            echo "</pre>";
            echo count($params);


            // make new connection if not available
            if($this->_handle == null)
                $this->Connect();
            // make prepared statement
            $query = $this->_handle->prepare($sql);
            // add values to prepared statement depending on type
            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($value));
                }else{
                    $query->bindValue(':'.$key, $value, SQLITE3_TEXT);
                }
            }
            $result = $query->execute();

            // get all results
            while($row = $result->fetchArray(SQLITE3_ASSOC)){
                $res[] = $row;
            }

            //var_dump($x);

            return $res;
        }

        public function Connect()
        {
            $this->_handle = new SQLite3("database.db");
        }

        public function Disconnect()
        {
            // close database connection
            $this->_handle->close();
        }
    }
?>

这是我表格的创建声明

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 Library 3.7.7.1。

也许有人可以在他的平台上测试我的代码并告诉我他是否有同样的问题。

0 个答案:

没有答案