2012-01-31 58 views
3

根據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' />

因此,我可以顯示圖像。但是,我怎樣才能在數據庫中插入圖像?

+1

你不知道我爲什麼需要這個。我想用內容填充SQLite數據庫(在這種情況下也是圖像)。該數據庫用於僅下載一個文件(數據庫)的移動客戶端。這是我的障礙,我必須這樣做。 – testing 2012-01-31 15:24:03

+0

如果你只是想下載一個文件,爲什麼不把它作爲一個包含數據庫和圖像目錄的zip壓縮文件? – 2012-01-31 15:54:01

+1

不同的客戶端可以有不同的版本,所以我需要創建不同版本的圖片目錄。此外,不同客戶的實施也必須改變。所以目前我想保留圖像存儲在數據庫中的解決方案。這是可能的,因爲SQLiteManager可以將圖像存儲爲BLOB。爲什麼這不應該由PHP腳本實現? – testing 2012-01-31 16:04:33

回答

0

如果您對文件進行編碼並將其保存在文本字段中,可能會避免許多麻煩。

$dataToSave = base64_encode(file_get_contents('filename'));

閱讀你需要一個BASE64_DECODE。

+0

我也嘗試使用'base64_encode'和'bin2hex'將圖像存入數據庫。數據庫中的圖像以某種方式進行十六進制解碼並保存爲「BLOB」。我不得不問客戶的開發人員他們現在如何處理圖像,以及他們是否可以切換到'base64_encode'。與此同時,我設法顯示數據庫中的圖像。所以我可以顯示BLOB圖像,甚至可以用SQLiteManager輸入BLOB圖像。用PHP插入圖像應該不那麼困難。但如果我沒有得到這個管理,你的答案將是我認爲的唯一解決方案。 – testing 2012-02-01 16:45:41