在我使用PDO之前它工作正常但我在插入图片方面遇到了问题。现在我切换到SQLite3,现在正确存储图片。但是我遇到了SQLite3的奇怪问题。每个INSERT INTO
命令都完成两次。这仅涉及INSERT
,因为我对UPDATE
或DELETE
没有任何问题。
这是我的测试脚本
<?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。
也许有人可以在他的平台上测试我的代码并告诉我他是否有同样的问题。