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);
}

問題は、上記のコードがネストされていることです。つまり、リンク解除関数を実行するたびに新しい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 に答える