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

PDO chèn giá trị mảng

Đầu tiên, thứ tự đánh giá của bạn là sai. Bạn không nên đặt một biến có giá trị POST TRƯỚC KHI kiểm tra xem giá trị POST có tồn tại hay không. Bạn nên kiểm tra sự tồn tại của nó sau đó đặt nó thành một biến chỉ khi nó tồn tại.

$id = $conn->lastInsertId(); // obtained from above (*)

if (!isset($_POST['services'])) {
    echo  'Nothing Selected';
} else {
    $services = $_POST['services']; // array(0 => 1, 1 => 2, ...)

Thứ hai, tôi cho rằng bạn đã có kết nối từ trước (*) - vì vậy không cần phải kết nối lại. Vì truy vấn của bạn ngắn, bạn có thể sử dụng ? để ràng buộc các tham số của bạn như được hiển thị trong Ví dụ # 3 .

    try {
        $stmt = $conn->prepare('INSERT IGNORE INTO marketing_lookup SET domain_id = ?, service_id = ?');
        foreach ($services as $serviceId) {
            $stmt->execute(array($id, $serviceId));
        }
    } catch (PDOException $e) {
        echo $e->getMessage();
    }
}

$conn = null; // pointless

Bạn có thể muốn xem xét giao dịch vì bạn đang thực hiện nhiều lần chèn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các bản ghi mới kể từ truy vấn cuối cùng trong MySQL View

  2. Cách tốt nhất để cập nhật bản ghi trong MySQL từ nguồn cấp dữ liệu XML

  3. Kiểu dữ liệu ENUM (Enumeration) trong MySQL:12 sự kiện hàng đầu và lời khuyên hữu ích

  4. Cách đặt classpath trình điều khiển jdbc

  5. Lược đồ XSD sang MySQL