我正在使用下面的脚本,所以用户可以上传他们的个人资料图片。第一次上传图像(当图像不存在的位置)它的工作很好。但是,如果图像已经存在的路径(如果用户试图改变个人资料图片)新的图像不会取代旧的。我得到成功的查询。
任何帮助都将不胜感激!
谢谢
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
require_once('db.php');
$name = $_POST['name'];
$dir = '../uploadImages/';
$file = basename($_FILES['image']['name']);
$uploadfile = $dir . $file;
if(move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile))
{
$path = $name;
$path .= 'Image.png';
$query = mysql_query("UPDATE users SET imagePath='$path' WHERE username='$name'");
if ($query)
{
echo 'success';
}
else
{
echo 'error';
}
}
else
{
echo mysql_error();
}
?>
6条答案
按热度按时间mpgws1up1#
更好的方法是取消链接文件(如果存在
jslywgbw2#
如果
move_uploaded_file
失败,它返回false,在这种情况下,根本不执行SQL,所以mysql_error
在else
分支中回显,确实不会输出错误。如果
move_uploaded_file
失败,它会发出一个警告,这将取决于你的PHP设置。然而,这个问题与MySQL无关。如果您尝试先显式删除目标文件(如果该文件存在)。请先使用
file_exists
检查,然后使用unlink
删除该文件。如果unlink
失败,则可能是权限问题,不允许您删除或覆盖该文件。cqoc49vn3#
不,你的逻辑是错误的。看看你的个人资料图片的URL,无论是在这里,在facebook或twitter。你看到他们使用一个固定的可预测的名称?他们没有,这是一个很好的理由,你需要独特的,不可预测的文件名。
试试这个:
然后从你的数据库中查询旧图片的名称,然后上传新图片,如果成功,更新数据库中用户的个人资料图片,并使用之前获得的信息(如果有的话)取消链接()旧文件。
确保你不允许上传php文件或任何其他讨厌的东西,你可以使用php文件信息扩展.
v7pvogib4#
然后使用
move_uploaded_file()
移动文件。v6ylcynt5#
如果执行此操作,新映像将被替换:
ubby3x7f6#
嘿,所以如果有人像我一样,在2023年使用xampp,正在寻找这里,并希望比2012年更新的解决方案,我修复了这个问题,从他们的网站下载最新的PHP版本,并将zip中的所有.exe文件替换为xampp中php下的文件,实际上,这应该不会改变什么,因为这以前不是一个问题,但它修复了它sooo是的。尝试一下。