Что не так с моей функцией?

Вот мой код для функции

function multiple_delete($checkbox, $table = 0, $url = 0, $picture1 = 0, $picture2 = 0, $picture3 = 0){ echo $count = count($checkbox); for( $j=0;$j<$count;$j++) { $delete_id = $checkbox[$j]; $query = "SELECT * FROM $table WHERE id = '$delete_id'"; $result = mysql_query($query); $row = mysql_fetch_array($result); if( $picture1 !== 0 && $picture2 !== 0 && $picture3 !== 0) { $pic_1 = $picture1; $pic_2 = $picture2; $pic_3 = $picture3; unlink($pic_1); unlink($pic_2); unlink($pic_3); continue; } if( $picture1 !== 0 && $picture2 !== 0 && $picture3 == 0 ) { $pic_1 = $picture1; $pic_2 = $picture2; unlink($pic_1); unlink($pic_2); continue; } } for($i=0;$i<$count;$i++) { $del_id = $checkbox[$i]; $sql = "DELETE FROM $table WHERE id='$del_id'"; $result_delete_data = mysql_query($sql); } alert('Deleted Successfully'); redirect_url($url); return true; } 

Моя проблема – когда я вызываю функцию, используя следующий код.

 @multiple_delete($_POST['checkbox'], 'news', 'news.php', '$row[\'pic_title\']', '$row[\'pic_brief\']', '$row[\'pic_detail\']'); 

три переменные массива $ row ['pic_title'], $ row ['pic_brief'], $ row ['pic_detail'], не анализируются как значение в функции в первом для цикла, а просто печатают строку и, следовательно, не может получить значение, хранящееся в базе данных. например

в первом, если условие i определило 3 переменные,

  $pic_1 = $picture1; $pic_2 = $picture2; $pic_3 = $picture3; 

$ picture1, $ picture2 и $ picture3 содержит значение, которое я объявил в функции, теперь, когда я делаю что-то вроде этого echo $pic_1 = $picture1; он печатает $row['pic_title'] точное значение, которое я объявил в функции вместо разбора значения, которое на самом деле upload/news/title/pic_title1.jpg Я попытался проверить его так, вместо того, чтобы объявлять значение в определенном функция i фактически просто изменила значение трех переменных на

  $pic_1 = $row['pic_title']; $pic_2 = $row['pic_brief']; $pic_3 = $row['pic_detail']; 

это работает очень хорошо, без каких-либо проблем. почему эта переменная $ picture1, которая содержит значение $ row ['pic_title']; отказывается разбирать его и заставлять его просто печатать строку, а если я меняю ее вручную, это работает? где я иду не так?

кроме трех последних параметров, у меня нет проблем с анализом первых трех параметров, которые работают отлично, я тестировал их разными способами. единственная проблема, с которой я столкнулся, – это последние три параметра

Изменить: я пытался использовать двойные кавычки, одинарные кавычки и одинарные кавычки с двойной кавычкой с комбинацией оператора конкатенации. без кавычек. ничего не работает.

PS: спасибо заранее

Related of "Что не так с моей функцией?"

Попробуй это:

 function multiple_delete($checkbox, $table, $url, $picture1, $picture2, $picture3){ echo $count = count($checkbox); for($j=0; $j<$count; $j++) { $delete_id = $checkbox[$j]; $query = "SELECT * FROM $table WHERE id = '$delete_id'"; $result = mysql_query($query); $row = mysql_fetch_array($result); $pic1 = $row[$picture1]; $pic2 = $row[$picture2]; $pic3 = $row[$picture3]; if(!empty($pic1) && !empty($pic2) && !empty($pic3)) { unlink($pic1); unlink($pic2); unlink($pic3); } else if(!empty($pic1) && !empty($pic2)) { unlink($pic1); unlink($pic2); } $sql = "DELETE FROM $table WHERE id='$delete_id'"; $result_delete_data = mysql_query($sql); } // this is javascript, not php // alert('Deleted Successfully'); redirect_url($url); return true; } 

Вызвать функцию следующим образом:

 multiple_delete($_POST['checkbox_name'], 'table_name', 'redirect_url', 'column_name_pic_1', 'column_name_pic_2', 'column_name_pic_3'); 

избавиться от апострофов вокруг ваших имен переменных в вызове функции, т. е. попытаться

 , $row[\'pic_title\'], 

вместо

 , '$row[\'pic_title\']', 

Я получил решение этой проблемы. в случае, если это может помочь кому-либо, вот ссылка на решение.

Как разобрать значение из строки в вызове функции?