Hướng dẫn how to insert data using pdo in php - cách chèn dữ liệu bằng pdo trong php

  1. Chèn truy vấn với vị trí vị trí
  2. Chèn truy vấn với người giữ chỗ được đặt tên
  3. Chèn nhiều hàng
  4. Nhận xét (24)

Trước hết, hãy đảm bảo rằng bạn đã có một biến kết nối PDO được cấu hình chính xác cần để chạy các truy vấn SQL với PDO và để thông báo cho bạn về các lỗi có thể xảy ra.

Để chạy truy vấn chèn với PDO, chỉ cần làm theo các bước bên dưới:

  • Tạo câu lệnh SQL Chèn chính xác
  • Thay thế tất cả các giá trị thực tế bằng trình giữ chỗ
  • Chuẩn bị truy vấn kết quả
  • Thực hiện câu lệnh, gửi tất cả các giá trị thực tế dưới dạng mảng.

Chèn truy vấn với vị trí vị trí

Như thường lệ, những người giữ chỗ vị trí ngắn gọn và dễ sử dụng hơn

$sql "INSERT INTO users (name, surname, sex) VALUES (?,?,?)";
$stmt$pdo->prepare($sql);
$stmt->execute([$name$surname$sex]);

hoặc bạn có thể chuỗi EXECUTE () để chuẩn bị ():

$sql "INSERT INTO users (name, surname, sex) VALUES (?,?,?)";
$pdo->prepare($sql)->execute([$name$surname$sex]);

Quan trọng! Bạn không phải kiểm tra kết quả của execute() (vì nó thường được hiển thị trong các hướng dẫn chất lượng thấp). Một điều kiện như vậy sẽ không có ý nghĩa, vì trong trường hợp lỗi, PDOException sẽ bị ném và việc thực thi tập lệnh sẽ bị chấm dứt, điều đó có nghĩa là một điều kiện như vậy sẽ không bao giờ đạt đến phần else. Không nên sử dụng toán tử try ... catch, trừ khi bạn có một kịch bản cụ thể để xử lý lỗi, chẳng hạn như rollback giao dịch được hiển thị bên dưới. Vui lòng xem bài viết về báo cáo lỗi để biết chi tiết. You don't have to check the result of execute() (as it is often shown in low-quality tutorials). Such a condition will make no sense, as in case of error, a PDOException will be thrown and the script execution will be terminated, which means such a condition will never reach the else part.
Neither a try ... catch operator should be used, unless you have a specific scenario to handle the error, such as a transaction rollback shown below. Please see the article about error reporting for the details.

Chèn truy vấn với người giữ chỗ được đặt tên

Chèn nhiều hàng

$data = [
    
'name' => $name,
    
'surname' => $surname,
    
'sex' => $sex,
];
$sql "INSERT INTO users (name, surname, sex) VALUES (:name, :surname, :sex)";
$stmt$pdo->prepare($sql);
$stmt->execute($data);

hoặc bạn có thể chuỗi EXECUTE () để chuẩn bị ():

$sql "INSERT INTO users (name, surname, sex) VALUES (:name, :surname, :sex)";
$pdo->prepare($sql)->execute($data);

Quan trọng! Bạn không phải kiểm tra kết quả của execute() (vì nó thường được hiển thị trong các hướng dẫn chất lượng thấp). Một điều kiện như vậy sẽ không có ý nghĩa, vì trong trường hợp lỗi, PDOException sẽ bị ném và việc thực thi tập lệnh sẽ bị chấm dứt, điều đó có nghĩa là một điều kiện như vậy sẽ không bao giờ đạt đến phần else. Không nên sử dụng toán tử try ... catch, trừ khi bạn có một kịch bản cụ thể để xử lý lỗi, chẳng hạn như rollback giao dịch được hiển thị bên dưới. Vui lòng xem bài viết về báo cáo lỗi để biết chi tiết. The only characters allowed in the placeholder names are Latin letters, numbers and underscores. No umlauts or dashes ar any other characters are allowed. It's also a good idea to keep all the letters lowercase.

Chèn nhiều hàng

Nhận xét (24)

  • Trước hết, hãy đảm bảo rằng bạn đã có một biến kết nối PDO được cấu hình chính xác cần để chạy các truy vấn SQL với PDO và để thông báo cho bạn về các lỗi có thể xảy ra.
  • Để chạy truy vấn chèn với PDO, chỉ cần làm theo các bước bên dưới:

Tạo câu lệnh SQL Chèn chính xác

Thay thế tất cả các giá trị thực tế bằng trình giữ chỗ

  • Chuẩn bị truy vấn kết quả
  • Thực hiện câu lệnh, gửi tất cả các giá trị thực tế dưới dạng mảng.
  • Như thường lệ, những người giữ chỗ vị trí ngắn gọn và dễ sử dụng hơn
  • hoặc bạn có thể chuỗi EXECUTE () để chuẩn bị ():
  • Quan trọng! Bạn không phải kiểm tra kết quả của execute() (vì nó thường được hiển thị trong các hướng dẫn chất lượng thấp). Một điều kiện như vậy sẽ không có ý nghĩa, vì trong trường hợp lỗi, PDOException sẽ bị ném và việc thực thi tập lệnh sẽ bị chấm dứt, điều đó có nghĩa là một điều kiện như vậy sẽ không bao giờ đạt đến phần else. Không nên sử dụng toán tử try ... catch, trừ khi bạn có một kịch bản cụ thể để xử lý lỗi, chẳng hạn như rollback giao dịch được hiển thị bên dưới. Vui lòng xem bài viết về báo cáo lỗi để biết chi tiết.
  • Trong trường hợp bạn có một mảng được xác định trước với các giá trị hoặc thích các khoản giữ chỗ được đặt tên nói chung, mã sẽ là
  • Quan trọng! Các ký tự duy nhất được phép trong tên giữ chỗ là chữ cái Latin, số và nhấn mạnh. Không có Umlauts hoặc Dashes AR bất kỳ ký tự nào khác được cho phép. Đó cũng là một ý tưởng tốt để giữ tất cả các chữ cái viết thường.
  • Như đã giải thích trong bài viết chính, một câu lệnh được chuẩn bị một lần có thể được thực hiện nhiều lần, giảm nhẹ chi phí trên trình phân tích truy vấn. Vì vậy, thật hợp lý khi sử dụng tính năng này khi chúng ta cần chèn nhiều hàng vào cùng một bảng. Chỉ một vài ghi chú trước khi chúng tôi bắt đầu:
  • Đảm bảo rằng chế độ mô phỏng bị tắt, vì sẽ không có lợi ích tốc độ khác, tuy nhiên nhỏ.
  • Đó là một ý tưởng tốt để kết thúc các truy vấn của chúng tôi trong một giao dịch. Trong một số trường hợp, nó sẽ tăng tốc đáng kể các phần chèn, và nó có ý nghĩa tổng thể, để đảm bảo rằng tất cả dữ liệu đã được thêm vào hoặc không có.
  • Vì vậy, cuối cùng mã của chúng tôi sẽ giống như
  • $data = [
        [
    'John','Doe'22],
        [
    'Jane','Roe'19],
    ];
    $stmt $pdo->prepare("INSERT INTO users (name, surname, age) VALUES (?,?,?)");
    try {
        
    $pdo->beginTransaction();
        foreach (
    $data as $row)
        {
            
    $stmt->execute($row);
        }
        
    $pdo->commit();
    }catch (
    Exception $e){
        
    $pdo->rollback();
        throw 
    $e;
    }
    Bài viết liên quan:
  • Chọn truy vấn với PDO
  • Cập nhật truy vấn sử dụng PDO
  • Cách kết nối với MySQL bằng PDO
  • hoặc bạn có thể chuỗi EXECUTE () để chuẩn bị ():