01/10/2018, 16:53

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

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 ...

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.

Trịnh Tiến Mạnh

27 chủ đề

6824 bài viết

Cùng chủ đề
0