引言

一、环境准备

在开始之前,请确保以下环境已经准备就绪:

  1. PHP环境
  2. MySQL数据库
  3. 文件上传功能支持(如Apache或Nginx服务器)

二、图片上传

1. 创建HTML表单

<form action="upload.php" method="post" enctype="multipart/form-data">
  <input type="file" name="image" />
  <input type="submit" value="上传图片" />
</form>

2. PHP上传处理

<?php
// 检查是否有文件被上传
if (isset($_FILES['image'])) {
    $image = $_FILES['image'];
    $file_name = $image['name'];
    $file_tmp = $image['tmp_name'];
    $file_size = $image['size'];
    $file_error = $image['error'];

    $file_ext = strtolower(end(explode('.', $file_name)));
    $allowed_ext = array('jpg', 'jpeg', 'png', 'gif');

    if (in_array($file_ext, $allowed_ext) && $file_error === 0) {
        // 设置图片上传路径
        $upload_dir = "uploads/";
        $file_new_name = uniqid('', true) . '.' . $file_ext;
        $upload_path = $upload_dir . basename($file_new_name);

        // 移动临时文件到指定路径
        if (move_uploaded_file($file_tmp, $upload_path)) {
            echo "文件已成功上传到: " . $upload_path;
        } else {
            echo "文件上传失败。";
        }
    } else {
        echo "文件类型不允许或发生错误。";
    }
}
?>

三、图片存储到MySQL数据库

1. 创建数据库表

CREATE TABLE images (
    id INT AUTO_INCREMENT PRIMARY KEY,
    file_name VARCHAR(255) NOT NULL,
    file_path VARCHAR(255) NOT NULL
);

2. 保存图片信息

function saveImageToDB($db, $file_name, $file_path) {
    $stmt = $db->prepare("INSERT INTO images (file_name, file_path) VALUES (?, ?)");
    $stmt->bind_param("ss", $file_name, $file_path);
    $stmt->execute();
    $stmt->close();
}

3. 从数据库中检索图片

SELECT * FROM images;
<?php
$db = new mysqli("localhost", "username", "password", "database");

if ($db->connect_error) {
    die("连接失败: " . $db->connect_error);
}

$result = $db->query("SELECT * FROM images");

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo '<img src="' . $row['file_path'] . '" alt="' . $row['file_name'] . '" />';
    }
} else {
    echo "没有找到任何图片。";
}

$db->close();
?>

四、总结