explode()期望参数2是字符串

时间:2015-10-20 13:16:34

标签: php arrays explode implode

请帮助我解决问题 我想得到这样的结果 - >

UPDATE anggota SET id = '1000',name = 'Danti',Address = 'Jalan Mawar' WHERE Kode_anggota='10000' 

我使用$_GET作为我的表名,所以我可以对所有表使用查询,这是我的代码:

<?php
  function updateData($value) {
      $table = $_GET['tujuan'];
       $id = $_GET['id'];
      $query1 = mysql_query("SELECT * FROM $table ORDER BY Kode_$table");
      $fieldNum = mysql_num_fields($query1);
        for($q=0;$q<$fieldNum;$q++){
          $fieldName = mysql_field_name($query1, $q);
          $name [] = $fieldName;
        }
        $output1 = explode (" ",$name);

        foreach ($value as $arrVal) {
          $total [] = $arrVal;
        }
      $output = explode("", $total);
      echo "UPDATE $table SET";
      for($a=0;$a<$fieldNum;$a++){
        $akhir = "$output1".$a." = $output".$a.""; 
        $akhir1 [] = $akhir;
      }
      $akhir2 = implode (",",$akhir1);
      echo $akhir2;
      echo " WHERE Kode_$table='$id'"; 
    }
?>

但是,当我运行我的程序时,我收到了2个这样的通知 - &gt;

  

警告:explode()期望参数2为字符串,数组在第88行的C:\ xampp \ htdocs \ Proyek 2 \ cobalagi \ koneksi_class.php中给出

     

警告:explode()要求参数2为字符串,在第93行的C:\ xampp \ htdocs \ Proyek 2 \ cobalagi \ koneksi_class.php中给出数组       UPDATE anggota SET0 = 0,1 = 1,2 = 2在哪里Kode_anggota =&#39; 10000&#39;

我该怎么办?

3 个答案:

答案 0 :(得分:2)

  • explode()函数用于将字符串分解为array.So字符串 应作为第二个参数参数提供。
  • implode()函数从一个元素返回一个字符串 array.So数组应作为第二个参数参数提供。

因此,$output1 = explode (" ",$name);应为$output1 = implode(" ",$name);

$output = explode("", $total);应为$output = implode(" ", $total);

答案 1 :(得分:1)

$ name是一个数组,因而错误

你不需要爆炸功能

答案 2 :(得分:0)

这有各种严重的问题。正如Nuriddin Rashidov所指出的,错误的技术原因是你滥用了explode()函数。

更重要的是,基于客户端提供的数据,您正在为自己的查询构建打开严重的SQL注入漏洞。请检查这些关键字并考虑使用预准备语句并重新考虑数据库体系结构,以避免在运行时指定表名。