根據this thread我應該使用fopen
。我已經這樣做了,但在我的示例中,我使用的是bindValue
而不是bindParam
。把圖像放入SQLite數據庫
$query->bindValue(':'.$key, fopen($value, "rb"), PDO::PARAM_LOB);
$value
包含文件路徑(/var/www/html/....jpg)。
我試過這個,但是當我用特定條目打開SQLiteManager時,我得到[Exception ... "Component returened failure code 0x8052000b (NS_ERROR_FILE_CORRUPTED)
。
爲什麼不能正常工作?
This是我的其他實現的樣子。
編輯:
file_get_contents
帶給我同樣的錯誤。
也許這是一個PHP模塊的問題?
SELECT sqlite_version()
帶給我3.7.7.1
phpinfo()
給我
配置命令: '--without-sqlite的'
額外的.ini文件解析:/etc/php.d/pdo_sqlite的.ini,/etc/php.d/sqlite.ini
SQLite的:
PECL Module version 2.0-dev $Id: sqlite.c,v 1.166.2.13.2.9 2007/05/19 17:58:22 iliaa Exp $
SQLite Library 2.8.17
SQLite Encoding UTF-8
PDO drivers mysql, odbc, sqlite, sqlite2
PDO_SQLITE
PECL Module version 1.0.1 $Id: pdo_sqlite.c,v 1.10.2.6.2.2 2007/03/23 14:30:00 wez Exp $
SQLite Library 3.3.6
PDO:
PDO drivers mysql, odbc, sqlite, sqlite2
編輯2:
這是如何可以顯示BLOB圖像。 getimage.php
header("Content-type: image/jpg");
require_once('class.DatabaseQuery.php');
$db = new DatabaseQuery();
$name = sqlite_escape_string($_GET['name']);
$sql = "SELECT image FROM $name WHERE _id=:id;";
$id = $_GET['id'];
$result = $db->ExecuteQuery($sql, array("id"=>$id));
echo $result[0]['image'];
顯示圖像:<img src='getimage.php?name=$printname&id=" . $row['_id'] . "' heigth='75' width='75' alt='Test' />
因此,我可以顯示圖像。但是,我怎樣才能在數據庫中插入圖像?
你不知道我爲什麼需要這個。我想用內容填充SQLite數據庫(在這種情況下也是圖像)。該數據庫用於僅下載一個文件(數據庫)的移動客戶端。這是我的障礙,我必須這樣做。 – testing 2012-01-31 15:24:03
如果你只是想下載一個文件,爲什麼不把它作爲一個包含數據庫和圖像目錄的zip壓縮文件? – 2012-01-31 15:54:01
不同的客戶端可以有不同的版本,所以我需要創建不同版本的圖片目錄。此外,不同客戶的實施也必須改變。所以目前我想保留圖像存儲在數據庫中的解決方案。這是可能的,因爲SQLiteManager可以將圖像存儲爲BLOB。爲什麼這不應該由PHP腳本實現? – testing 2012-01-31 16:04:33