在mysql数据表中添加图片并且能在浏览器中显示
时间: 2024-03-16 19:47:15 浏览: 20
要在 MySQL 数据表中添加图片并在浏览器中显示,通常有两种方法:
1. 将图片存储在服务器文件系统中,然后在数据库中存储图片的文件路径。这种方法简单易用,但是需要考虑图片存储路径的管理和维护。
2. 将图片存储在数据库中,通常使用 BLOB 类型存储二进制数据。这种方法可以将图片和数据一起备份和恢复,但是需要注意数据库性能和存储空间的问题。
以下是一个简单的示例,演示了如何将图片存储在数据库中,并在浏览器中显示:
1. 创建一个名为 `images` 的表,包含一个名为 `id` 的自增主键和一个名为 `image` 的 BLOB 类型字段。
```sql
CREATE TABLE images (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
image BLOB NOT NULL,
PRIMARY KEY (id)
);
```
2. 使用 PHP 上传图片并将其存储到数据库中:
```php
<?php
// 连接到数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');
if ($conn->connect_error) {
die('连接数据库失败: ' . $conn->connect_error);
}
// 检查是否有上传的文件
if (!isset($_FILES['image']) || $_FILES['image']['error'] !== 0) {
die('上传文件失败');
}
// 读取上传的文件内容
$image = file_get_contents($_FILES['image']['tmp_name']);
// 将图片存储到数据库中
$stmt = $conn->prepare('INSERT INTO images (image) VALUES (?)');
$stmt->bind_param('b', $image);
$stmt->execute();
if ($stmt->affected_rows !== 1) {
die('保存图片失败');
}
echo '保存图片成功';
?>
```
3. 在浏览器中显示图片:
```php
<?php
// 连接到数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');
if ($conn->connect_error) {
die('连接数据库失败: ' . $conn->connect_error);
}
// 查询图片
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;
$stmt = $conn->prepare('SELECT image FROM images WHERE id = ?');
$stmt->bind_param('i', $id);
$stmt->execute();
$stmt->bind_result($image);
if ($stmt->fetch()) {
// 输出图片
header('Content-Type: image/jpeg'); // 可根据实际情况修改
echo $image;
} else {
// 图片不存在
header('HTTP/1.0 404 Not Found');
echo '图片不存在';
}
?>
```
在浏览器中访问 `show_image.php?id=1` 即可显示 ID 为 1 的图片。