вставить несколько строк в базу данных из массивов - PullRequest
0 голосов
/ 16 января 2011

Мне нужна помощь по вставке нескольких строк из разных массивов в мою базу данных.

Я создаю базу данных для плана рассадки, для каждого блока рассадки есть 5 рядов (A-E), в каждом ряду 15 мест.

мои строки DB: seat_id, seat_block, seat_row, seat_number, поэтому мне нужно добавить 15 seat_numbers для каждого seat_row и 5 seat_rows для каждого seat_block.

Я смоделировал его с помощью некоторых циклов 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 . " ";
        }

    }
}

Может быть, есть лучший способ сделать это, чем использовать массивы? я просто хочу избежать написания оператора SQL длиной более 100 строк;)

(я тоже использую codeigniter, если кто-то знает специфический для CI способ сделать это, но я не слишком обеспокоен этим)

Ответы [ 2 ]

2 голосов
/ 16 января 2011

попробуй

<?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);



?>
1 голос
/ 16 января 2011

Одним из решений является использование подготовленных утверждений:

$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));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...