php上传图片到数据库
时间: 2023-08-17 15:23:58 浏览: 97
首先,我们需要在表中创建一个 BLOB 类型的列,用于存储图片数据。然后,我们可以使用 PHP 的 file_get_contents() 函数将上传的图片读取到一个变量中,然后将该变量中的数据插入到数据库中。
以下是一个示例代码:
```php
// 连接数据库
$host = 'localhost';
$username = 'your_username';
$password = 'your_password';
$dbname = 'your_database_name';
$conn = mysqli_connect($host, $username, $password, $dbname);
// 处理上传的文件
if(isset($_FILES['image']) && $_FILES['image']['error'] == 0) {
$image = file_get_contents($_FILES['image']['tmp_name']);
$image = mysqli_real_escape_string($conn, $image);
$sql = "INSERT INTO images (image_data) VALUES ('$image')";
mysqli_query($conn, $sql);
echo "图片上传成功!";
} else {
echo "图片上传失败!";
}
// 关闭数据库连接
mysqli_close($conn);
```
注意,上述代码中的 images 是我们刚才创建的表名,image_data 是我们刚才创建的 BLOB 类型的列名。另外,我们使用 mysqli_real_escape_string() 函数对图片数据进行转义,以避免 SQL 注入攻击。
当用户上传一张图片后,该图片的二进制数据将被插入到数据库中。如果你想将图片显示在网页上,可以使用以下代码:
```php
// 连接数据库
$host = 'localhost';
$username = 'your_username';
$password = 'your_password';
$dbname = 'your_database_name';
$conn = mysqli_connect($host, $username, $password, $dbname);
// 获取图片数据
$id = 1; // 假设图片的 ID 是 1
$sql = "SELECT image_data FROM images WHERE id = $id";
$result = mysqli_query($conn, $sql);
$image = mysqli_fetch_assoc($result)['image_data'];
// 显示图片
header('Content-type: image/jpeg');
echo $image;
// 关闭数据库连接
mysqli_close($conn);
```
上述代码中的 id 是我们要显示的图片的 ID,通过 SELECT 语句从数据库中获取图片数据,然后将其作为图像数据输出到浏览器中,浏览器会自动将其显示为图片。注意,我们在 header() 函数中设置了 Content-type 为 image/jpeg,这样浏览器就知道该数据是一张 JPEG 格式的图片。
阅读全文