Bài 25: Insert nhiều record vào MySQL bằng PHP – Học lập trình PHP cơ bản

Trang chủ » Training » Bài 25: Insert nhiều record vào MySQL bằng PHP – Học lập trình PHP cơ bản
19/02/2022 Training 10 viewed
Trong thư viện MySQLi hỗ trợ hai hàm dùng để thực hiện nhiều câu lệnh truy vấn đó là hàm mysqli_multi_query() đối với trường hợp dùng Procedural và phương thức multi_query() đối với trường hợp dùng Object-oriented.
Riêng đối với PDO thì ta phải thực hiện khác chút xíu đó là phải hợp transaction và mỗi lần mỗi câu truy vấn chứ không phải là chạy cùng lúc.

1) Dùng MySQLi Object-oriented

// Kết nối
$conn = new mysqli('localhost', 'root', '', 'demo');
 
// Kiểm tra kết nối
if ($conn->connect_error) {
    die("Kết nối thất bại: " . $conn->connect_error);
} 
 
// Câu lệnh SQL
$sql = "INSERT INTO News (title, content) 
        VALUES ('tieu de 1', 'noi dung 1');";
$sql .= "INSERT INTO News (title, content) 
        VALUES ('tieu de 2', 'noi dung 2');";
 
// Thực thi câu lệnh
if ($conn->multi_query($sql) === TRUE) {
    echo "Thêm thành công";
} else {
    echo "Lỗi: " . $sql . "<br>" . $conn->error;
}
 
// Ngắt kết nối
$conn->close();

2) Dùng MySQLi Procedural

// Kết nối
$conn = mysqli_connect('localhost', 'root', '', 'demo');
 
// Kiểm tra kết nối
if (!$conn) {
    die("Kết nối thất bại: " . mysqli_connect_error());
}
 
// Câu lệnh SQL
$sql = "INSERT INTO News (title, content) 
        VALUES ('tieu de 1', 'noi dung 1');";
$sql .= "INSERT INTO News (title, content) 
        VALUES ('tieu de 2', 'noi dung 2');";
 
// Thực thi câu lệnh
if (mysqli_multi_query($conn, $sql)) {
    echo "Thêm thành công";
} else {
    echo "Lỗi: " . $sql . "<br>" . mysqli_error($conn);
}
 
// Ngắt kết nối
mysqli_close($conn);

3) Dùng PDO

try {
    // Kết nối
    $conn = new PDO("mysql:host=localhost;dbname=demo", 'root', '');
    // Thiết lập exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
    // Bắt đầu transaction
    $conn->beginTransaction();
     
    // Thực thi từng câu truy vấn
    $conn->exec("INSERT INTO News (title, content) 
        VALUES ('tieu de 1', 'noi dung 1')");
    $conn->exec("INSERT INTO News (title, content) 
        VALUES ('tieu de 2', 'noi dung 2')");
 
    // Nếu mọi thứ thành công thì commit
    $conn->commit();
     
    echo "Thao tác thành công";
} 
catch (PDOException $e) {
    // Nếu xuất hiện lỗi thì rollback lại các thao tác
    $conn->rollback();
    echo "Lỗi: " . $e->getMessage();
}
 
 
// Ngắt kết nối
$conn = null;
Chia sẻ:
Tags:
TOP HOME