使用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数据库中,从而实现头像的个性化展示。