Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách chèn dữ liệu thứ tự từ mảng đa chiều

Ví dụ của tôi sử dụng PDO nhưng tôi nghĩ bạn có ý tưởng, Ngoài ra, bạn nên chuyển sang PDO hoặc MYSQLI thay vì mysql

ví dụ:

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

?>

Định dạng tên đầu vào

Tôi thấy bạn đang làm điều này:amount_' . $x . ' bài mảng của bạn sẽ giống như thế này:

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

nhưng nếu bạn ghi amount[] mảng sẽ trông như thế này:

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

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

Tùy chọn cuối cùng giúp đọc mảng tốt hơn nhiều.

Ví dụ về 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();
} 
?>

Như bạn thấy có ssd đang đứng trước các tham số này là các loại có 4 loại:

  • i =người tương tác
  • s =string
  • d =gấp đôi
  • b =blob

Bạn phải luôn xác định điều này.

Chỉnh sửa

Bạn nên sử dụng cái này:

<?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. Chèn dữ liệu vào bảng mysql bằng cách sử dụng ansible

  2. Cách kiểm tra lựa chọn để cập nhật trong MySQL

  3. Cách thực hiện truy vấn eav này để tạo kết quả theo chiều ngang

  4. mysql - Chèn hàng vào bảng 1 khi hàng cụ thể bị xóa trên bảng 2

  5. Cách đúng để giữ cho các kết nối được gộp chung tồn tại (hoặc hết thời gian chờ và lấy lại các kết nối mới) trong thời gian không hoạt động lâu hơn cho ứng dụng MySQL, Grails 2