我正在创建一个论坛,目前正在努力让我的用户能够更新他们的个人资料图片(头像)。我试图用BLOB做这个。我知道将图像存储在数据库上并不是一个好主意,但这只是一个自学项目,将来不太可能被考虑用于现实生活。
我目前遇到的问题是图片未保存在数据库中,导致以下错误:
Notice: Undefined index: user_avatar in C:\wamp64\www\Latest_try\editprofile.php on line 24
我是php(显然)的新手,如果有人可以帮我理解我需要将它保存到数据库中,我将不胜感激。
我也想知道我是否可以像这样保存图像,或者我是否需要一个完整的单独表格,然后可以使用外键以某种方式链接到用户信息。
下面是我正在使用的关于函数和问题的mysql表。
mysql -> describe users;
+-----------------+-------------+------+-----+---------+--------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+--------------+
| user_Id | int(8) | NO | PRI | NULL |auto_increment|
| user_name | varchar(30) | NO | | NULL | |
| user_pass | varchar(255)| NO | | NULL | |
| user_email | varchar(255)| NO | | NULL | |
| user_date | datetime | NO | | NULL | |
| user_level | int(8) | NO | | NULL | |
| user_description| varchar(255)| YES | | NULL | |
| user_avatar | longblob | NO | | NULL | |
+-----------------+-------------+------+-----+---------+--------------+
8 rows in set (0.02 sec)
这是我的editprofile.php文件的代码。
<?php
include 'connect.php';
include 'header.php';
if(!isset($_SESSION['signed_in']))
{
//the user is not logged in.
echo 'You must be <a href="/Latest_try/signin.php">Signed in</a> to add an image to your profile.';
}
else
{
if($_SERVER['REQUEST_METHOD']!='POST')
{
echo '<form action="" method="post" enctype="multipart/form-data">
Choose Image: <input type="file" name="user_avatar"><br/>
<input type="submit" name="submit" value="Upload">
</form>';
}
else
{
$query = "INSERT INTO
users(user_avatar)
VALUES
('" . mysqli_real_escape_string($link, $_POST['user_avatar']) . "',
NOW(),
'" . $_SESSION['user_id'] . "')";
$result=mysqli_query($link, $query);
if($result===false)
{
mysqli_error($link);
}
else
{
echo 'Your avatar has been updated!';
}
}
}
?>
答案 0 :(得分:0)
在数据库栏目中保存图片真的很糟糕。请将其保存在与项目位于同一目录的文件夹中,并将图片名称保存到数据库!!
答案 1 :(得分:0)
如您所知,将数据保存在数据库中是一种不好的做法。但是,您遇到的问题是由于使用了不正确的变量。请查看以下声明:
$query = "INSERT INTO
users(user_avatar)
VALUES
('" . mysqli_real_escape_string($link, $_FILES['user_avatar']['name']) . "',
NOW(),
'" . $_SESSION['user_id'] . "')";
您还可以参考有关此here的更多信息。