PDO在db中插入图像并检索图像

时间:2015-01-21 08:57:32

标签: php pdo

我正在尝试在DB中插入图像但由于某些原因我无法检索它。我在数据库中使用BLOB类型的图像。

我用来上传图片的代码。一旦我在db中保存图像,在“IMAGE”列中我得到文件image-01.bin

if (isset($_POST["submit"]) {

  $id= $_GET["id"];
  $image = $_POST["image"];

  $stmt=$conn->prepare("INSERT INTO db (id, image) VALUES (:id, :image)");

  $stmt->bindParam(:id, $id);
  $stmt->bindParam(:image, $image);
  $stmt->execute();
}

我用来在网页上打印图片的代码。

$stmt = "Select Id, Image from db where id = $id LIMIT 0,1"

$q = $conn->query($stmt);

while ($r = $q ->fetch():
  echo "<img src ='",$r[Image],"' width='100' height='100' />";
endwhile;

1 个答案:

答案 0 :(得分:-1)

您可以将select绑定为类似于示例1的LOB类型,如下所示:http://php.net/manual/en/pdo.lobs.php

以下是示例 - 请注意,它会绑定所选列并将其设置为PDO::PARAM_LOB

<?php
$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2');
$stmt = $db->prepare("select contenttype, imagedata from images where id=?");
$stmt->execute(array($_GET['id']));
$stmt->bindColumn(1, $type, PDO::PARAM_STR, 256);
$stmt->bindColumn(2, $lob, PDO::PARAM_LOB);
$stmt->fetch(PDO::FETCH_BOUND);

header("Content-Type: $type");
fpassthru($lob);