Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wstawić dane porządkowe z tablicy wielowymiarowej

Mój przykład używa PDO, ale myślę, że masz pomysł. Powinieneś również przejść do PDO lub MYSQLI zamiast mysql

przykład:

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

?>

Format nazwy wejściowej

Widzę, że to robisz:amount_' . $x . ' Twój wpis w tablicy będzie wyglądał tak:

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

ale jeśli napiszesz amount[] tablica będzie wyglądać tak:

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

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

Ostatnia opcja znacznie ułatwia odczytywanie tablicy.

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

Jak widać stoi tam ssd przed parametrami są to typy są 4 typy:

  • i =liczba całkowita
  • s =ciąg
  • d =podwójna
  • b =kropla

Musisz to zawsze zdefiniować.

Edytuj

Powinieneś użyć tego:

<?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. Prześlij wiele skryptów php i przechowuj w bazie danych mysql

  2. Konwertowanie znacznika czasu pola daty i godziny z mysql na php

  3. Wyzwalacz mySQL działa po wstawieniu konsoli, ale nie po wstawieniu skryptu

  4. Zapytanie wykonane dwukrotnie (przez błąd) w Javie z niepożądanymi wartościami

  5. Jakiej funkcji użyć do haszowania haseł w MySQL?