Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So fügen Sie Bestelldaten aus einem mehrdimensionalen Array ein

Mein Beispiel verwendet PDO, aber ich denke, Sie haben die Idee, Sie sollten auch zu PDO oder MYSQLI anstelle von mysql wechseln

das Beispiel:

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

?>

Namensformat eingeben

Ich sehe, Sie tun dies:amount_' . $x . ' Ihr Array-Post sieht folgendermaßen aus:

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

aber wenn Sie amount[] schreiben Das Array sieht folgendermaßen aus:

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

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

Die letzte Option macht es viel besser, das Array zu lesen.

MYSQLI-Beispiel

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

Wie Sie sehen können, steht dort ssd vor den parametern sind dies die typen es gibt 4 typen:

  • i =Ganzzahl
  • s =Zeichenkette
  • d =doppelt
  • b =Klecks

Dies müssen Sie immer definieren.

Bearbeiten

Sie sollten dies verwenden:

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