Mysql
 sql >> база данни >  >> RDS >> Mysql

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

Моят пример използва PDO, но мисля, че разбирате идеята. Също така трябва да преминете към PDO или MYSQLI вместо mysql

примерът:

<?php
// pdo example

$sql = 'INSERT INTO table (field1, field2, field3) VALUES (:value1, :value2, :value3)';

// $dbh is pdo connection
$insertTable = $dbh->prepare($sql);

$countArray = count($array);

for ($i = 0; $i < $countArray; $i++) {
   $insertTable->bindParam(':value1', $array['value1'][$i], PDO::PARAM_INT); // if value is int
   $insertTable->bindParam(':value2', $array['value2'][$i], PDO::PARAM_STR); // if value is str
   $insertTable->bindParam(':value3', $array['value3'][$i], PDO::PARAM_STR);
   $insertTable->execute();
}

?>

Формат за въвеждане на име

Виждам, че правите това:amount_' . $x . ' публикацията ви в масива ще изглежда така:

[amount_0] => 100
[amount_1] => 200
[amount_2] => 1
[quantity] => 10
[quantity] => 20
[quantity] => 1

но ако напишете amount[] масивът ще изглежда така:

[amount] => Array
    (
        [0] => 100
        [1] => 200
        [2] => 1
    )

[quantity] => Array
    (
        [0] => 10
        [1] => 20
        [2] => 1

Последната опция прави много по-добре четенето на масива.

Пример за MYSQLI

<?php
$sql = 'INSERT INTO table (field1, field2, field3) VALUES (?, ?, ?)';
$stmt = $mysqli->prepare($sql); 

$countArray = count($array);

for ($i = 0; $i < $countArray; $i++) {
$stmt->bind_param('ssd', $array['value1'][$i], $array['value2'][$i], $array['value3'][$i]);
   $stmt->execute();
} 
?>

Както можете да видите, има изправен ssd преди параметрите това са типовете има 4 типа:

  • i =цяло число
  • s =низ
  • d =двойно
  • b =петно

Винаги трябва да дефинирате това.

Редактиране

Трябва да използвате това:

<?php 
// Parse the form data and add inventory item to the system
if (isset($_POST['cartOutput'])) { 

$sql= 'INSERT INTO orders (product_name, price, quantity, date_added) VALUES(?,?,?, NOW())';      

$stmt = $myConnection->prepare($sql); 
$countArray = count($_POST["item_name");
for ($i = 0; $i < $countArray; $i++) {
$stmt->bind_param('sss', $_POST['item_name'][$i], $_POST['amount'][$i], $_POST['quantity'][$i]);
$stmt->execute();
}

echo $sql   ; 

exit();
}
?>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да проследите промените в множество колони в таблицата на базата данни за целите на одита?

  2. Защо условието IN би било по-бавно от =в sql?

  3. как да поддържате полето за ред на показване в php

  4. Как да създам потребител със същите привилегии като root в MySQL/MariaDB?

  5. Избор на период от време MySQL с date_format