2

如果我这样做,它会起作用:

$data_array2 = mysql_query("SELECT pic_loc FROM pictures WHERE user_id = '".$id."'");
$cell_pictures = mysql_fetch_array($data_array2);
foreach($cell_pictures as $pics_being_deleted) 
{
unlink($pics_being_deleted);
}

问题是上面的代码是嵌套的,这意味着它每次运行 unlink 函数时都会运行一个新的 MySQL 查询,所以我制作了下面的代码以使其不这样做:

$the_pics_raw_2 = array();
$data_array2 = mysql_query("SELECT pic_loc FROM pictures WHERE user_id = '".$id."'");
while($cell_pictures = mysql_fetch_array($data_array2))
{
$the_pics_raw = $cell_pictures['pic_loc'];
$the_pics_raw_2[] = $the_pics_raw;
}

$the_pics_raw_3 .= " \"../../". implode("\" , \"../../" ,$the_pics_raw_2)."\"";
$the_pics = array($the_pics_raw_3);

foreach($the_pics as $pics_being_deleted) 
{
unlink($pics_being_deleted);
}

我得到这个错误作为回报:

Warning: unlink( "../../users/biondizzle/photos/pic_3387677.png" , "../../users/biondizzle/photos/pic_1581185.png") [function.unlink]: No such file or directory

它显然不会找到该"../../users/biondizzle/photos/pic_3387677.png" , "../../users/biondizzle/photos/pic_1581185.png"目录,因为这是同时运行的 2 个单独的目录,因此foreach()不是“foreaching”。

有什么方法可以让unlink()我在数组中列出的每个目录单独运行,我想我可以通过添加逗号和引号来让它工作implode()?非常感谢,希望我解释得足够好-迈克

4

2 回答 2

1

我认为这是你想要做的:

while($cell_pictures = mysql_fetch_array($data_array2)) {
    $the_pics_raw = $cell_pictures['pic_loc'];
    $the_pics[] = "../../" . $the_pics_raw;
}

foreach($the_pics as $pics_being_deleted) {
    unlink($pics_being_deleted);
}

您会注意到我已经删除了该$the_pics_raw_3 .= " \"../../". implode("\" , \"../../" ,$the_pics_raw_2)."\"";行,因为它正在将数组转换为字符串,这使得它无法foreach结束。

于 2012-04-16T12:26:39.760 回答
0

使用此代码:

$the_pics_raw = array();
$data_array2 = mysql_query("SELECT pic_loc FROM pictures WHERE user_id = '".$id."'");
while($cell_pictures = mysql_fetch_array($data_array2))
{
array_push($the_pics_raw,"../../".$cell_pictures['pic_loc']);
}

foreach($the_pics as $the_pics_raw) 
{
unlink($pics_being_deleted);
}
于 2012-04-16T12:40:01.843 回答