php 显示数据库图片,php插入和显示数据库中的图片(处理二进制数据)

本文介绍了如何使用PHP将图片以二进制数据存储到MySQL数据库中,并动态从数据库读取显示图片。首先,通过HTML表单上传图片,PHP脚本`insertPic.php`读取并插入数据库。然后,`showPic.php`读取数据库中的图片数据并设置正确的HTTP头来显示图片。这一过程涉及到文件上传、PDO数据库操作以及二进制数据处理。
摘要由CSDN通过智能技术生成

插入和显示数据库中的图片(处理二进制数据)

数据库应用程序,特别是基于Web的数据库应用程序,常常会涉及到图片信息的存储和显示。通常我们使用的方法是将所要显示的图片存在特定的目录下,在数据库中保存相应的图片的名称,然后在PHP中查询数据库获得文件路径并在HTML文件中引用。

但是,如果我们想动态的显示图片,上述方法就不能满足需要了。因此必须把图片存入数据库,然后通过编程动态地显示我们需要的图片。

在实际操作中,可以利用PHP将图片插入到数据库中,在数据库中,图片是以二进制格式存储的。随后你也可以使用PHP将图片数据读出来并显示在网页上。

使用HTML表单可以将客户端的图片文件作为请求传递给服务端,PHP可以读取请求中的上载文件数据,并将数据保存在数据库中。

1.将图片插入数据库

下面我们就来看一个范例,了解怎样使用表单提交图片文件,并保存到数据库中。这个范例有两个文件组成。

upload.htm

这个网页包含一个表单,用于提交图片文件,它的代码如下:

代码清单7-6

/p>

//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

">

提交表单

保存到Web根目录下,在浏览器中请求,可以看到如图7-33所示的效果:

083414c3340dce8b8dc2f25282fc026a.png

图7-33 文件上传表单

insertPic.php

这个文件用来将提交的文件数据保存到数据库中,代码如下:

代码清单7-7

//由于上传过来的图片被保存在一个临时文件中,所以

//我们仅需要读取该文件就可以获取传过来的图片

$fp = fopen($_FILES["myFile"]["tmp_name"],"rb");

$buf = addslashes(fread($fp,$_FILES["myFile"]["size"]));

//创建一个PDO对象

$dbh = new PDO("mysql:host=localhost;port=

3306;dbname=myDatabase", "root", "verysecret");

//执行插入操作并将结果保存在一个变量中

$result = $dbh->query("INSERT INTO employees

(firstName,lastName,EmpType,age,picture) VALUES

('myFirst','myLast','myEmpType',50,'$buf')");

//获取影响的行数

if ($result->rowCount() >0) {

echo("数据已插入。");

} else {

echo("不能执行插入操作。");

}

//显式的关闭PDO连接

$dbh = NULL;

?>

将这个文件也保存到Web根目录下。

测试

现在我们可以测试一下功能,在图7-33中显示的网页上,我们使用"浏览"按钮选择一个图片文件,然后单击"Submit"按钮,这就会打开insertPic.php文件执行,如果中间没有出错,那么就算执行成功了。

关于insertPic.php文件的基本工作原理我们现在是清楚的,但是对于如何分离出提交表单中的文件数据可能还不清楚,不过没关系,我们将在后面的章节再详细介绍如何处理文件上载。

2.显示数据库中的图片数据

在将图片保存到数据库中后,我们就可以读取它并显示出来,也可以将它保存为文件。下面我们就来看怎样显示数据库中保存的图片数据。

我们新建一个PHP文件,命名为showPic.php,编写代码如下:

代码清单7-8

//创建一个PDO对象

$dbh = new PDO("mysql:host=localhost;port=3306;

dbname=myDatabase", "root", "verysecret");

//设置字符编码

$dbh->exec("SET CHARACTER SET gb2312");

//执行查询并将结果保存在一个变量中

$result = $dbh->query("SELECT * FROM employees

WHERE firstName = 'myFirst'");

//获取第一行数据

$row = $result->fetch();

//写出数据记录,首先查看是否存在记录

if(!empty($row)){

header("Content-type: image/JPEG",true);

echo($row["picture"]);

}

//显式的关闭PDO连接

$dbh = NULL;

?>

将这个文件也保存到Web根目录下,然后在浏览器中请求,就会得到如图7-34所示的效果(图中显示的图片是我们提交的图片):

5b9135c445cdcf28f436d7cb8d169a64.png

图7-34 显示数据库中的图片数据

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP 插入图片数据库,可以使用如下步骤: 1. 连接数据库 使用 PHP 的 mysqli 或 PDO 扩展连接到数据库。 2. 将图片数据插入数据库 使用 INSERT INTO 语句将图片数据插入数据库图片数据通常是以二进制格式存储的,可以使用 PHP 的 file_get_contents() 函数读取图片文件,然后使用 mysqli 或 PDO 扩展的预处理语句来插入数据。 3. 在 HTML 显示图片 使用 HTML 的 <img> 标签来显示图片。将 <img> 标签的 src 属性设置为 PHP 文件的 URL,该 PHP 文件会读取数据库图片数据并输出为图片格式。 以下是一个简单的示例代码: 1. PHP 文件 - 将图片数据插入数据库 ``` <?php // 连接数据库 $host = "localhost"; $user = "username"; $password = "password"; $dbname = "database"; $conn = new mysqli($host, $user, $password, $dbname); // 获取图片数据 $image = file_get_contents("path/to/image.jpg"); // 插入图片数据数据库 $stmt = $conn->prepare("INSERT INTO images (image) VALUES (?)"); $stmt->bind_param("b", $image); $stmt->execute(); // 关闭数据库连接 $conn->close(); ?> ``` 2. HTML 文件 - 显示数据库图片 ``` <!DOCTYPE html> <html> <head> <title>显示图片</title> </head> <body> <img src="show_image.php?id=1" alt="图片"> </body> </html> ``` 3. PHP 文件 - 读取数据库图片并输出 ``` <?php // 连接数据库 $host = "localhost"; $user = "username"; $password = "password"; $dbname = "database"; $conn = new mysqli($host, $user, $password, $dbname); // 获取图片数据 $id = $_GET['id']; $sql = "SELECT image FROM images WHERE id = $id"; $result = $conn->query($sql); $row = $result->fetch_assoc(); // 设置响应头为图片类型 header("Content-type: image/jpeg"); // 输出图片二进制数据 echo $row['image']; // 关闭数据库连接 $conn->close(); ?> ``` 注意:在实际应用,需要对获取到的数据进行安全处理,例如防止 SQL 注入攻击。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值