вставить несколько строк в базу данных из массивов

0

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

Я делаю базу данных для плана посадки, для каждого сидения блок состоит из 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 строк;)

(im, используя codeigniter, если кто-нибудь знает о конкретном способе выполнения CI, но я не слишком беспокоюсь об этом)

  • 0
    Задумывались ли вы с помощью Перечисления , один для блока, строки и NUM?
Теги:
database
arrays
foreach

2 ответа

2
Лучший ответ

попробовать

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

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

$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));
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню