将图像放入SQLite数据库

时间:2012-01-31 15:14:21

标签: php database image sqlite pdo

根据this thread,我应该使用fopen。我已经这样做但在我的示例中我使用的是bindValue而不是bindParam

$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模块版本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编码UTF-8

     

PDO驱动程序mysql,odbc,sqlite,sqlite2

PDO_SQLITE

  

PECL模块版本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驱动程序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 个答案:

答案 0 :(得分:0)

如果您对文件进行编码并将其保存在文本字段中,您可能会避免很多麻烦。

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

要阅读,您需要一个base64_decode。