【问题标题】:Insert database rows from columns of data from associative array of indexed arrays从索引数组的关联数组中的数据列插入数据库行
【发布时间】:2016-06-07 02:43:29
【问题描述】:

我有一个名为 $works 的数组,如下所示:

[
    'type' => [1, 5],
    'description' => [2, 6],
    'hours' => [3, 7],
    'amount' => [4, 8]
]

我需要在两次迭代中将所有值发送到数据库 (MySQL)。比如:

INSERT INTO `works` (`type`, `description`, `hours`, `amount`) VALUES (works[type][0], works[decsription][0], works[hours][0], works[amount][0]);

INSERT INTO `works` (`type`, `description`, `hours`, `amount`) VALUES (works[type][1], works[description][1], works[hours][1], works[amount][1]);

【问题讨论】:

  • 那么你有什么尝试?这并不是一项特别难完成的任务。
  • 要么使用for循环,然后使用计数器变量来访问循环中的每个值,要么转置数组,然后使用foreach循环
  • Darren - 我知道这并不难,但不知何故,我一直在努力尝试不同的循环变化三个小时。当然我试过 $i++
  • @ Rizier123 - 伙计,非常感谢!!!就我而言,这是一种非常方便的解决方案!!! "转置数组,然后使用 foreach 循环"
  • 数组转置上的好线程:stackoverflow.com/questions/797251/…

标签: php multidimensional-array transpose insert-query


【解决方案1】:
for($i=0; $i<count($works['type']); $i++) {
    $query = "INSERT INTO `works` (`type`, `decsripion`, `hours`, `amount`) VALUES ('{works[type][$i]}', '{works[description][$i]}', '{works[hours][$i]}', '{works[amount][$i]}')";
    mysql_query($query);
}

前提是您已经连接并选择了一个数据库。 有更好的方法可以做到这一点,但这取决于您使用的框架。例如,您可能希望在尝试将这些值插入数据库之前对其进行转义。

【讨论】:

    【解决方案2】:

    你好,你可以试试这个。

    <?php
    $works = array('type'=>array(1,5),'description'=>array(2,6),'hours'=>array(3,7),'amount'=>array(4,8));
        $insert_query = 'INSERT INTO works(type,description,hours,amount) values ';
        for($i=0; $i<count($works['type']); $i++) {
                    $insert_query .= "('".$works['type'][$i]."','".$works['description'][$i]."','".$works['hours'][$i]."','".$works['amount'][$i]."')," ;
    
        }
    
        $query = rtrim($insert_query, ',');
        //echo $query;
        if(!mysqli_query($con,$query)){
            die('Error: ' . mysqli_error($con));
        }else{
            echo "record added";
        }
    

    在这里我使用了bulk insert into,如果你想看query,你可以echoquery。根据您的问题,我假设所有array 意味着typedescription 等都相同length 所以我使用$works['type'] 来计算forloop 步骤

    【讨论】:

      猜你喜欢
      • 2012-11-10
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多