sql >> Databasteknik >  >> RDS >> Mysql

Hur man infogar beställningsdata från flerdimensionell array

Mitt exempel använder PDO men jag tror att du förstår idén. Du bör också flytta till PDO eller MYSQLI istället för mysql

exemplet:

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

?>

Inmatningsnamnformat

Jag ser att du gör så här:amount_' . $x . ' ditt array-inlägg kommer att se ut så här:

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

men om du skriver amount[] arrayen kommer att se ut så här:

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

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

Det sista alternativet gör det mycket bättre att läsa arrayen.

MYSQLI-exempel

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

Som du kan se finns det stående ssd före parametrarna dessa är typerna finns det 4 typer:

  • i =heltal
  • s =sträng
  • d =dubbel
  • b =blob

Du måste alltid definiera detta.

Redigera

Du bör använda detta:

<?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. Hur man formaterar siffror i MariaDB

  2. Måste jag frigöra mysql-resultatet efter att ha lagrat det?

  3. Resurs-id #6-fel i PHP med MySQL

  4. Hur man ansluter till mysql som körs i container från värddator