2

我正在尝试使用(cakephp)将图像插入到 BLOB 列中的 sqlite DB。

我正在使用此代码

$insert = "INSERT INTO story (page, image) 
                    VALUES (:page, :image)";
        $stmt = $file_db->prepare($insert);

        // Bind parameters to statement variables
        $img = file_get_contents($this->request->data['image']['tmp_name']);
        $img = mysql_real_escape_string($img);
        $stmt->bindParam(':page', $this->request->data['page']);
        $stmt->bindParam(':image', $img);

           // Execute statement
          $stmt->execute();

它正在插入,但字符集不是它应该的 blob 数据.. 有没有其他方法可以做到这一点,否则我的代码有什么问题?

4

2 回答 2

7

对标题中问题的回答,因为它在 [php sqlite blob] 中排名第一。这不使用 PDO,因为我遇到了麻烦。您必须使用准备好的语句,通常无法执行文字 SQL 插入,因为 blob 的大小太大。这是更新而不是插入,但基本相同。

// example variables
$row_id=1;
$image_filename="/home/mywebsite/public_html/images/an_image.png";
$sqlite_table_name="user_images";
$database_filename="database.sqlite";
// the blob field in the sqlite table is called ZIMAGE and the id field is ZID.

// Code
if (file_exists($image_filename)) {
$db = new SQLite3($database_filename);
$query = $db->prepare("UPDATE '{$sqlite_table_name}' SET ZIMAGE=? WHERE ZID=?");
$image=file_get_contents($image_filename);
$query->bindValue(1, $image, SQLITE3_BLOB);
$query->bindValue(2, $row_id, SQLITE3_TEXT);
$run=$query->execute();
}

我认为编程中没有任何硬性规则,在某些情况下,我将图像存储在 Sqlite 中的 blob 中。我还使用正则表达式而不是 Xpath 来抓取网页!什么都能完成工作。

于 2013-05-16T18:16:27.350 回答
3

这不是答案,但这个问题有“不确定性”,太长了,不能作为评论

  1. 您提到了 CakePHP,但您的问题中没有涉及 CakePHP
  2. 你提到'SQLite',但你使用的是mysql_real_escape?

请明确您打算使用的数据库。

关于 MySQL 和在数据库中存储图像;

  • PHP 中的 mysql_ 函数已弃用不再维护
  • 尝试确定是否真的需要将图像数据存储 数据库中,一般情况下,最好将图像本身存储在文件系统中,并将图像的名称存储在数据库中

阅读此问题以获取有关在 mysql 中插入图像的答案:

使用 php 在 MySql 数据库中插入 Blob

阅读此问题以获取有关在 SQLite 中插入图像(使用 PDO)的答案:

远程图像文件到 PHP 中的 sqlite blob?

这是 BLOB 的通用 PDO 逐步演练;

http://www.phpeveryday.com/articles/PDO-Working-With-BLOBs-P554.html

于 2013-03-31T08:02:16.717 回答