php将图片保存入mysql数据库失败的解决方法

当PHP将图片保存到MySQL数据库中时,可能会遇到许多问题,比如无法将图像文件成功保存在数据库中,图像无法正确显示等等。下面是将图片保存到MySQL数据库中的解决方案。

确认表结构

首先确认表结构,确保创建的存储图像的表存在正确的列,可以使用以下代码创建一个包含正确列的表:

CREATE TABLE `images` (
 `id` INT NOT NULL AUTO_INCREMENT, 
 `name` VARCHAR(100) NOT NULL, 
 `type` VARCHAR(20) NOT NULL, 
 `data` MEDIUMBLOB NOT NULL, 
 `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
 PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

确认上传文件的大小

通常,MySQL中存储BLOB对象大小的最大值为65535个字节(就是 64 KB)。可以在my.cnf文件中进行更改,但这需要重启MySQL服务器才能生效。如果要存储大于此大小的图像,可以使用文件系统或云存储代替BLOB列。

编写正确的代码

在PHP代码中,应该使用base64_encode()将图像数据转换为base64编码,并使用addslashes()转义字符。下面是一个保存图像到MySQL数据库中的代码示例:

$imgData = addslashes(base64_encode(file_get_contents($_FILES['image']['tmp_name'])));
$imageProperties = getimageSize($_FILES['image']['tmp_name']);
$extension = $imageProperties['mime'];

$insert_query = "INSERT INTO images (`name`,`type`,`data`) VALUES ('$name', '$extension', '$imgData')";

示例1

以下是一个实际的示例,演示如何将图像上传到MySQL数据库中。首先,让我们创建一个HTML表单来收集图像数据:

<form method="post" enctype="multipart/form-data" action="upload.php">
    <label for="name">Image Name</label>
    <input type="text" name="name" required>

    <label for="image">Select Image</label>
    <input type="file" name="image" accept="image/*" required>

    <button type="submit" name="submit">Upload</button>
</form>

然后,创建上传文件的PHP脚本upload.php:

<?php
// Check if form was submitted
if($_SERVER['REQUEST_METHOD'] == 'POST') {
    $name = $_POST['name'];

    // Get image data from file
    $imgData = addslashes(base64_encode(file_get_contents($_FILES['image']['tmp_name'])));
    $imageProperties = getimageSize($_FILES['image']['tmp_name']);
    $extension = $imageProperties['mime'];

    // Add to database
    $query = "INSERT INTO images (`name`,`type`,`data`) VALUES ('$name', '$extension', '$imgData')";
    mysqli_query($conn, $query);
}
?>

示例2

下面这个示例演示如何从数据库中检索图像并在浏览器中显示它。首先,查询数据库并获取数据:

<?php
$query = "SELECT * FROM `images`";
$result = mysqli_query($conn, $query) or die('Error, query failed');
if(mysqli_num_rows($result) == 0) {
    echo "Database is empty <br>";
} else {
    while($row = mysqli_fetch_array($result)) {
        echo "<img src='data:" . $row['type'] . ";base64," . $row['data'] . "' />";
    }
}
?>

这将在浏览器中显示数据库中包含的所有图像文件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php将图片保存入mysql数据库失败的解决方法 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • SQL 依据特定时间单位检索数据

    要依据特定时间单位检索数据,需要使用SQL的日期函数和日期格式化函数。下面是SQL检索数据的完整攻略: 1. 使用DATE_FORMAT函数格式化日期 在SQL中,使用DATE_FORMAT()函数将日期值格式化为一个指定的格式。该函数接受两个参数:DATE_FORMAT(date,format),其中date是日期值,format是格式化的字符串参数。下面…

    database 2023年3月27日
    00
  • mySQL中replace的用法

    MySQL中的REPLACE函数可以替换字符串中的指定字符,其语法如下: REPLACE(str, from_str, to_str) 其中,str表示原始字符串,from_str表示要替换的字符或者字符串,to_str表示替换成的字符或者字符串。 下面分别给出两条示例说明。 示例一 假设我们有以下一张表(表名为user_info): +———+…

    database 2023年5月21日
    00
  • 非常不错的SQL语句学习手册实例版

    非常不错的SQL语句学习手册实例版是一本很好的学习SQL语言的教程,本攻略将为你详细讲解如何利用这本教程学习SQL。 步骤一:阅读和理解SQL基本语法 首先,你需要阅读和理解SQL基本语法,包括SQL关键字、数据类型、操作符等。你可以通过翻阅该书籍第1到第6章的内容,了解SQL语言的基础知识。 步骤二:学习SQL的高级特性 学习了基本语法后,你还需要进一步学…

    database 2023年5月21日
    00
  • Java try catch finally异常处理组合详解

    Java try-catch-finally异常处理组合详解 在Java编程中,异常处理是非常重要的一部分。异常是指程序执行过程中出现的错误情况,也就是程序无法正常运行。这时候我们需要对异常进行处理,以保证程序的正确性和稳定性。Java中提供了try-catch-finally组合来处理异常。 try-catch-finally语法 try-catch-fi…

    database 2023年5月21日
    00
  • mysql数据库太大了如何备份与还原

    备份和还原是数据库管理中必不可少的操作,当我们的 MySQL 数据库太大时,备份和还原就会变得更加困难。下面给出了备份和还原大型 MySQL 数据库的完整攻略。 一、备份 MySQL 数据库 1.使用 mysqldump 命令备份 mysqldump 命令是备份 MySQL 数据库的最常用方式,使用该命令可以轻松备份整个数据库或部分数据。实现方式如下: $ …

    database 2023年5月22日
    00
  • Linux 解决Deepin无法在root用户启动Google Chrome浏览器的问题

    步骤1:通过Shell获取Deepin版本信息 在终端中执行以下命令,查看Deepin的版本信息。此处以Deepin V20为例。 cat /etc/deepin-version 输出如下: 20 (1000) unstable 2022-06-20 步骤2:安装Google Chrome浏览器 在浏览器中打开Google Chrome浏览器官网(https…

    database 2023年5月22日
    00
  • 查看postgresql系统信息的常用命令操作

    下面是查看 PostgreSQL 系统信息的常用命令操作的完整攻略。 pg_controldata pg_controldata 命令用于查看 PostgreSQL 数据库集群控制文件的信息,包括该文件的位置、该集群的持久性实现方式和数据校验方式等。 使用示例: $ pg_controldata /path/to/postgresql/data 其中 /pa…

    database 2023年5月22日
    00
  • AD域中成员服务器SQL 2008 Server安装配置图文教程

    AD域中成员服务器SQL 2008 Server安装配置图文教程 安装 SQL Server 2008 之前,我们需要检查系统是否符合安装要求。可以参考官方文档。比如我们需要确保: 操作系统版本和之前的补丁已经安装 服务器符合硬件要求 安装之前需要关闭防火墙 接下来我们可以开始安装 SQL Server 2008。根据官方文档说明,我们可以进行如下步骤: 步…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部