Bài 09: Xóa dữ liệu MySQL & PHP

PHP & MySQL 17/03/2017 07:00 908
Lệnh delete dùng để xóa các records trong MySQL. Trong bài viết này mình sẽ giới thiệu tới các bạn sử dụng PHP để xóa các records trong MySQL.

Thông thường để xóa dữ liệu trọng một bảng thì có ba cách.

Cách 1: Sử dụng mệnh đề TRUNCATE trong MySQL.

TRUNCATE TABLE table_name;

Cách 2: Sử dụng mệnh đề DELETE  trong MySQL.

DELETE FROM table_name
WHERE [Điều_kiện]

Trong trường hợp này thông thường được sử dụng để xóa chọn một hoặc nhiều records phù hợp với một điều kiện nào đó. Thường trong ứng dụng website thì ta sẽ delete theo khóa chính bởi vì khóa chính tăng tự động và không trùng lặp nên truy vấn tìm kiếm sẽ nhanh hơn. Nếu bạn không truyền vào điều kiện where thì nó sẽ xóa hết tất cả data trong table ,vì vậy hãy cân nhắc kỹ điều kiện trước khi thực hiện lệnh này.

1. Sử dụng MySQLi Object-oriented

$host = "localhost";
$username = "root";
$password = "";
$dbName = "MySQLDemo";
 
// Tạo kết nối
$dbconn = new mysqli($host, $username, $password, $dbName);
 
// Kiểm tra kết nối
if ($dbconn->connect_error) {
	die("Kết nối thất bại: " . $dbconn->connect_error);
} 

// Câu lệnh DELETE
$sql = "DELETE FROM News WHERE id=1";
 
// Thực thi câu lệnh DELETE
if($dbconn->query($sql)===TRUE){
	echo "Xóa thành công";
}else{
	echo "Lỗi :".$dbconn->error();
}

// ngắt kết nối
$dbconn->close();

Trong trường hợp này mình xóa một record trong bảng News có ID = 1. Thông thường chúng ta sẽ lấy động ID cần xóa bằng cách truyền tham số id='[0-9]+' trên [QUERY_STRING]

// Câu lệnh DELETE
$id = isset($_GET['id']) && intval($_GET['id']) > 0 ? intval($_GET['id']) : 0;
$sql = "DELETE FROM News WHERE id={$id}";

2. Sử dụng MySQLi Procedural

$host = "localhost";
$username = "root";
$password = "";
$dbName = "MySQLDemo";
 
// Tạo kết nối
$dbconn = mysqli_connect($host, $username, $password, $dbName);
 
// Kiểm tra kết nối
if (!$dbconn) {
	die("Kết nối thất bại: " . mysqli_connect_error());
} 

// Câu lệnh DELETE
$id = isset($_GET['id']) && intval($_GET['id']) > 0 ? intval($_GET['id']) : 0;
$sql = "DELETE FROM News WHERE id={$id}";
 
// Thực thi câu lệnh DELETE
if(mysqli_query($dbconn,$sql)===TRUE){
	echo "Xóa thành công";
}else{
	echo "Lỗi :".mysqli_error($dbconn);
}

// ngắt kết nối
mysqli_close($dbconn);

3. Delete dữ liệu với PDO

$host = "localhost";
$username = "root";
$password = "";
$dbName = "MySQLDemo";
 
try {
	// Kết nối CSDL
	$dbconn = new PDO("mysql:host=$host;dbname=$dbName", $username, $password);
	  
	// Khai báo exception
	$dbconn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

	// Câu SQL
    $sql = "DELETE FROM News WHERE id=1";
	
	// Thực thi câu truy vấn
    $dbconn->exec($sql);
 
    echo "Xóa thành công!";
	
}catch (PDOException $e) {
    echo 'Lỗi' . "<br>" . $e->getMessage();
}
 
// Ngắt kết nối
$dbconn = null;

Tổng kết.

Như vậy mình đã giới thiệu tới các bạn cách xóa dữ liệu MySQL trong PHP. Trước khi xóa dữ liệu nào đó thì bạn nên xem xét kỹ càng trước khi quyết định xóa. Bạn nên sử dụng cơ chế prepared để đảm an toàn và toàn vẹn dữ liệu chống SQL Injection.

Xem Thêm

Profile photo of adminTheHalfHeart

B.V.T

Sinh ra và lớn nên ở Bắc Giang. Hiện tại thì tôi đang là một lập trình viên tại VietISO. Tôi lập website này với mục đích là bookmark những gì tôi đã đọc qua và mong muốn chia sẻ những gì tôi biết.