【问题标题】:insert multiple rows into database from arrays从数组中将多行插入数据库
【发布时间】:2011-01-16 18:35:23
【问题描述】:

我需要一些帮助,将不同数组中的多行插入到我的数据库中。

我正在为座位计划创建数据库,每个座位区有 5 排 (A-E),每排有 15 个座位​​。

我的数据库行是seat_id、seat_block、seat_row、seat_number,因此我需要为每个seat_row 添加15 个seat_number,为每个seat_block 添加5 个seat_rows。

我用一些 foreach 循环对其进行了模拟,但需要一些帮助才能将其转换为(希望是单个)SQL 语句。

$blocks = array("A","B","C","D");
$seat_rows = array("A","B","C","D","E");
$seat_nums = array("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15");

foreach($blocks as $block){

    echo "<br><br>";
    echo "Block: " . $block . " - ";

    foreach($seat_rows as $rows){

        echo "Row: " . $rows . ", ";

        foreach($seat_nums as $seats){
            echo "seat:" . $seats . " ";
        }

    }
}

也许有更好的方法来代替使用数组? 我只是想避免编写超过 100 行的 SQL 语句;)

(如果有人知道 CI 的特定方法,我也使用 codeigniter,但我不太在意)

【问题讨论】:

  • 你有没有想过使用ENUMs,一个用于blockrownum

标签: php mysql database arrays foreach


【解决方案1】:

试试

<?php

    $blocks = array("A","B","C","D");
    $seat_rows = array("A","B","C","D","E");
    $seat_nums = array("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15");

    foreach($blocks as $block){
        foreach($seat_rows as $rows){
            foreach($seat_nums as $seats){
                $querys[] = "('" . $block "','" . $rows . "', '" . $seats . "' )";
            }
        }
    }

    $query_inserts = join ( ", ", $querys );

    $query = "
        INSERT INTO
            table
        ( block, rows, seats )
        VALUES
            " . $query_inserts . "
        ";

    mysql_query ($query);



?>

【讨论】:

    【解决方案2】:

    一种解决方案是使用准备好的语句:

    $pdo = new PDO('mysql:dbname=mydb', 'myuser', 'mypass');
    
    $stmt = $pdo->prepare('INSERT INTO seats 
                              (seat_id, seat_block, seat_row, seat_number)
                              VALUES (?,?,?,?);
                         ');
    
    foreach (...) {
       $stmt->execute(array($seat_id, $seat_block, $seat_row, $seat_number));
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-25
      • 2014-06-27
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      • 2014-12-02
      相关资源
      最近更新 更多