我的功能出了什么问题?

时间:2010-08-28 00:25:17

标签: php

这是我的函数代码

 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'],在第一个for循环中不解析为函数中的值,而是只打印字符串因此无法获取存储在数据库中的值。例如

在第一个if条件中我定义了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的值,我尝试像这样测试它,而不是在定义的函数中声明值,实际上我只是将三个变量的值更改为

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

这非常好,没有任何问题。为什么变量$ picture1保存值$ row ['pic_title'];拒绝解析它并强制它只打印字符串,而如果我手动更改它有效吗?我哪里错了?

除了最后三个参数我没有任何问题解析前三个参数它完全正常我已经在很多方面测试它。我面临的唯一问题是最后三个参数

编辑:我尝试使用双引号,单引号和双引号的单引号与串联运算符的组合。没有引号。什么都行不通。

P.S:提前致谢

3 个答案:

答案 0 :(得分:3)

试试这个:

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

答案 1 :(得分:0)

在函数调用中删除变量名周围的撇号,即尝试

, $row[\'pic_title\'],

而不是

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

答案 2 :(得分:0)

我得到了解决这个问题的方法。万一它可以使任何人受益,这是解决方案的链接。

How do i parse the the value from a string in the function call?