PHP unlink函数

7
这是代码。
  $query = mysql_query("SELECT avatar FROM users WHERE UserID = ".$userID.""); 
        $row = mysql_fetch_array($query);
        $user_avatar = trim($row['avatar']);
unlink($user_avatar);

但是出现了一个错误警告,提示为:Warning: unlink();

为什么 $user_avatar 返回为空?而且如果我输出它,会显示 t_cabbbccebbfhdb.jpg


你得到了什么错误?你的帖子似乎缺少实际的错误消息。该文件是否真的存在于当前工作目录中? - catchmeifyoutry
3
当我看到PHP代码没有使用PHP Prepared Statements来防止SQL注入攻击漏洞时,我会感到担忧。我希望你在没有贴出代码的情况下能够对变量进行处理。如果没有,请考虑重写代码,使用PDO Prepared Statements而不是尝试对变量进行处理。 - sarnold
3个回答

12

unlink是用来删除文件的,而unset是用来处理变量的。

如果变量返回空值,可能是查询没有返回任何记录。你尝试过手动运行查询吗?


6
请用完整、连贯的句子进行写作。"写作风格很重要" - http://stackoverflow.com/questions/how-to-answer - BoltClock

1
$query = mysql_query("SELECT avatar FROM users WHERE UserID = ".$userID.""); 
        $row = mysql_fetch_array($query);
        $user_avatar = trim($row['avatar']);
unset($user_avatar);

//if you want to unlink file then

if(!empty($user_avatar)) {    
    unlink($home.$user_avatar); // $yourFile should have full path to your file
} 

文件存在,如果我写$home = $_SERVER['DOCUMENT_ROOT']; unlink($home.'t_cabbbccebbfhdb.jpg');它可以工作。但是如果我将其更改为unlink($home.$user_avatar);则错误消息显示unlick(/home/naturecl/public_html.),而$user_avatar就像是空的? - Ben
检查编辑后的代码,如果$user_avatar包含文件名,您可以使用unlink函数。 - Sudhir Bastakoti
$target = "$home/img/avatars/$user_avatar"; 如果我输出 $user_avatar,它会显示文件名,但在 unlink 函数中为空,并显示警告:unlink(/home/naturecl/public_html/img/avatars/)。 - Ben
你一直错过了实际的错误信息(即警告标题后面的部分)。发布完整的细节可能会让别人更容易帮助你。 - cmbuckley
好的,这是代码 $home = $_SERVER['DOCUMENT_ROOT']."/img/avatars/";$query = mysql_query("SELECT avatar FROM users WHERE UserID = ".$userID.""); $row = mysql_fetch_array($query); $user_avatar = trim($row['avatar']); unlink($home.$user_avatar); 错误是 Warning unlink(/home/naturecl/public_html/img/avatars/)[function.unlink]:No such file or directory in /home/naturecl/public_html/settings/portrait.php on line 213 - Ben

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接