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;