使用MySQL实现用户头像上传(mysql上传头像)


使用MySQL实现用户头像上传

随着社交网络和互联网的普及,头像已成为用户个性化展示的重要组成部分。因此,提供用户头像上传功能是很必要的。本文将介绍如何使用MySQL实现用户头像上传。

1. 数据库设计

我们需要在MySQL中创建一个数据库,命名为“user_avatar”。该数据库包含一个用户表和一个头像表。用户表用于存储用户的基本信息,包括用户ID和用户名;头像表用于存储用户头像的相关信息,包括头像ID、文件名、文件路径和上传时间等。

创建数据库的SQL语句如下:

CREATE DATABASE user_avatar;

创建用户表的SQL语句如下:

CREATE TABLE user (

id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

username VARCHAR(50) NOT NULL

);

创建头像表的SQL语句如下:

CREATE TABLE avatar (

id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

user_id INT UNSIGNED NOT NULL,

filename VARCHAR(100) NOT NULL,

filepath VARCHAR(100) NOT NULL,

upload_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

FOREIGN KEY (user_id) REFERENCES user(id)

);

2. 文件上传

用户在网站上上传头像时,其实也是上传了一个文件。我们需要编写一个PHP脚本,实现用户头像文件的上传。代码如下:

$allowedExts = array(“gif”, “jpeg”, “jpg”, “png”);

$extension = pathinfo($_FILES[“file”][“name”], PATHINFO_EXTENSION);

if ((($_FILES[“file”][“type”] == “image/gif”)

|| ($_FILES[“file”][“type”] == “image/jpeg”)

|| ($_FILES[“file”][“type”] == “image/jpg”)

|| ($_FILES[“file”][“type”] == “image/png”))

&& ($_FILES[“file”][“size”]

&& in_array($extension, $allowedExts)) {

if ($_FILES[“file”][“error”] > 0) {

echo “Error: ” . $_FILES[“file”][“error”] . “
“;

} else {

move_uploaded_file($_FILES[“file”][“tmp_name”], “upload/” . $_FILES[“file”][“name”]);

echo “File uploaded successfully!”;

}

} else {

echo “Invalid file”;

}

?>

此脚本中,$allowedExts变量表示允许上传的文件类型,$extension变量表示用户上传文件的后缀名。在文件上传的过程中,PHP会判断上传文件的类型、大小和后缀名是否合法,根据结果给用户反馈信息。

3. 数据库操作

文件上传成功后,我们需要将文件相关信息保存到MySQL数据库中。代码如下:

// connect to database

$mysqli = new mysqli(“localhost”, “root”, “”, “user_avatar”);

if ($mysqli->connect_errno) {

echo “Fled to connect to MySQL: ” . $mysqli->connect_error;

}

// insert into avatar table

$filename = $_FILES[“file”][“name”];

$filepath = “upload/” . $_FILES[“file”][“name”];

$user_id = $_POST[“user_id”];

$sql = “INSERT INTO avatar (user_id, filename, filepath) VALUES ($user_id, ‘$filename’, ‘$filepath’)”;

if ($mysqli->query($sql) === TRUE) {

echo “Record created successfully”;

} else {

echo “Error: ” . $sql . “
” . $mysqli->error;

}

// close database connection

$mysqli->close();

?>

此脚本中,我们首先连接数据库,然后插入一条新记录到头像表中。头像表的字段包括用户ID、文件名和文件路径,其中文件路径为上传文件在服务器上的存储路径。我们关闭数据库连接。

4. 显示头像

用户上传头像后,我们需要将头像显示在网站上。代码如下:

$mysqli = new mysqli(“localhost”, “root”, “”, “user_avatar”);

if ($mysqli->connect_errno) {

echo “Fled to connect to MySQL: ” . $mysqli->connect_error;

}

$user_id = $_GET[“user_id”];

$sql = “SELECT filepath FROM avatar WHERE user_id = $user_id ORDER BY upload_time DESC LIMIT 1”;

$result = $mysqli->query($sql);

if ($result->num_rows > 0) {

$row = $result->fetch_assoc();

$filepath = $row[“filepath”];

echo ““;

} else {

echo “No avatar found”;

}

$mysqli->close();

?>

此脚本中,我们查询头像表,找到最新上传的头像,然后将其显示在页面上。

使用MySQL实现用户头像上传,需要结合文件上传和数据库操作。通过以上步骤,我们可以轻松地实现用户头像上传功能,并将用户头像信息保存到MySQL数据库中,从而实现头像的个性化展示。