代码之家  ›  专栏  ›  技术社区  ›  Ibrahim Azhar Armar

我的功能出了什么问题?

php
  •  1
  • Ibrahim Azhar Armar  · 技术社区  · 15 年前

    这是我的函数代码

     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']不作为函数中的值进行分析,而只是打印字符串,因此无法获取存储在数据库中的值。例如

    在第一个条件中,我定义了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'];
    

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

    除了最后三个参数之外,我在分析前三个参数时没有任何问题,它工作得非常好,我已经在许多方面对它进行了测试。我面临的唯一问题是最后三个参数

    编辑:我尝试了双引号、单引号和单引号与双引号结合使用串联运算符。不带引号。没有效果。

    P.S:提前谢谢

    3 回复  |  直到 15 年前
        1
  •  3
  •   Mischa    15 年前

    试试这个:

    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');
    
        2
  •  0
  •   Nicolas78    15 年前

    在函数调用中去掉变量名周围的撇号,例如try

    , $row[\'pic_title\'],
    

    而不是

    , '$row[\'pic_title\']',
    
        3
  •  0
  •   Community Mohan Dere    8 年前

    我找到了这个问题的解决办法。如果它能让任何人受益,这里是解决方案的链接。

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

    推荐文章