Как вставить в базу 3 массива - PullRequest
0 голосов
/ 14 октября 2011

я хочу вставить 3 массива в базу данных, используя foreach или что-то еще

sql:

CREATE TABLE IF NOT EXISTS `orders` (
  `id` int(11) NOT NULL auto_increment,
  `order` text NOT NULL,
  `price` text NOT NULL,
  `quantity` text NOT NULL,
   PRIMARY KEY  (`id`)
   ) ENGINE=MyISAM DEFAULT CHARSET=cp1256 AUTO_INCREMENT=1 ;

форма:

<form method="POST" action="#">
    <p dir="ltr"><input type="text" name="order[]" size="20"></p>
    <p dir="ltr"><input type="text" name="price[]" size="20"></p>
    <p dir="ltr"><input type="text" name="quantity[]" size="20"></p>
    <p dir="ltr"><br /></p>
    <p dir="ltr"><input type="submit" value="Submit" name="B1"></p>
</form>

Для 2 массивов я использую:

foreach (array_combine($orders, $prices) as $order=> $price) {

}

Я хочу вставить это так: например:

1 - заказ - цена - количество

2- заказ - цена - количество

3 - заказ - цена - количество

4- заказ - цена - количество

5- заказ - цена - количество

...

...

как мне отредактировать этот код, чтобы вставить 3 массива

Спасибо

1 Ответ

0 голосов
/ 14 октября 2011

Код ниже показывает, как это сделать, но я не уверен, что ваша форма на самом деле возвращает массивы. Вы должны также выполнить некоторую проверку ввода, чтобы увидеть, действительно ли значения являются массивами и имеют ли они одинаковое количество элементов (функция count).

Код ниже просто создает оператор вставки на основе трех массивов.

// Get the arrays and sanatize them. I use hard codes ones in this example.
$orders = array('a', 'b', 'c', 'd', 'e');
$prices = array(1, 2, 3, 4, 5);
$quantities = array(5, 6, 7, 8, 9);


$query = "INSERT INTO orders (order, price, quantity) VALUES";
$comma = "";

// Move the array cursor of all arrays to the beginning.
reset($prices);
reset($quantities);
foreach ($orders as $order)
{
    // Get values and sanatize.
    $order = mysql_real_escape_string($order);
    $price = (float)current($prices);
    $quantity = (int)current($quantities);

    // Add to query.
    $query .= "$comma\n('$order', $price, $quantity)";
    $comma = ",\n";

    // Move pointer (for $orders, the foreach does this).
    next($prices);
    next($quantities);
}

// Execute $query.
var_dump($query);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...