【问题标题】:PHP 2D Array to MySQL DatabasePHP 2D 数组到 MySQL 数据库
【发布时间】:2011-02-06 01:24:27
【问题描述】:

我有一个 PHP 2D 数组,有很多键,每个键都有一个值,我需要把它放到 MySQL 数据库中。

该数据库有 8 个字段。例如。 Field1、Field2、Field3 等值等等。

我知道第 1、第 9、第 17、第 26 个值等需要插入语句,中间值将是更新语句。

最好的方法是什么?

【问题讨论】:

    标签: php mysql database arrays insert


    【解决方案1】:

    我认为你应该保留最后插入的行的db id,以及该行中有多少字段是空闲的。

    这应该允许您在将新数据放入数据库时​​进行适当的更新和/或插入。

    要将数组拆分为多个部分,您可以使用 array_slice() array_splice()array_chunk() 函数。

    【讨论】:

      【解决方案2】:
      $records = array_chunk($yourArray);
      
      foreach($records as $record)
      {
          $record = array_map("mysql_real_escape_string", $record);
          $q = 'INSERT INTO `yourTable` VALUES 
              '.$record[0].', 
              '.$record[1].', 
              '.$record[2].', 
              '.$record[3].', 
              '.$record[4].', 
              '.$record[5].', 
              '.$record[6].', 
              '.$record[7].', 
          ';
          $res = mysql_query($q);
      }
      

      【讨论】:

        【解决方案3】:

        我有一个 PHP 2D 数组,有很多键,每个键都有一个值,我需要把它放到 MySQL 数据库中。

        听起来很奇怪——PHP 不做二维数组。只有嵌套数组。

        我知道第 1、9、17、26 个值等需要插入语句

        我认为这意味着您没有二维数组 - 您有一个映射到非嵌套 PHP 数组的二维数据集....在这种情况下:

        for ($x=0; $x<count($data)/8; $x+=8) {
             $qry="INSERT INTO sometable (f1, f2, f3,f4,f5,f6,f7,f8) VALUES (";
             $join='';
             for ($y=0; $y<8; $y++ ) {
               $qry.=$join . prep_val($data[$x+$y]);
               $join=',';
             }
             mysql_query($qry);
        }
        

        (其中 prep_val 包含字符串并转义元字符)

        C.

        【讨论】:

          【解决方案4】:

          array_chunk() 如果我正确回答了这个问题,可能的答案。

          然后就是这样

          foreach ($chunks as $row) {
            array_map $row with mysql_real_escape_string
            implode to get VALUES clause
            INSERT
          }
          

          但是真正的数组示例可以为您自己和其他人节省大量时间

          说,如果你想保存键而不是值,必须先调用array_reverse。

          【讨论】:

            【解决方案5】:

            最简单的理解是使用计数器。喜欢:

            $cc=0;
            while(...){ // Whatever your finished condition is
             if($cc==0){
              //INSERT
             }else{
              //UPDATE
             }
             $cc++;
             if($cc==8) $cc=0;
            }
            

            【讨论】:

              猜你喜欢
              • 2015-02-02
              • 2016-04-07
              • 2014-03-27
              • 2023-03-24
              • 2012-09-29
              • 1970-01-01
              • 2014-04-04
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多