PHP
PHP

Trang chủ

Tìm hiểu về hàm mysqli_real_escape_string() trong PHP

PHP, viết tắt của Hypertext Preprocessor, là ngôn ngữ lập trình script phía máy chủ được thiết kế đặc biệt cho phát triển web. Điểm nổi bật của PHP so với các ngôn ngữ khác là khả năng tương thích với nhiều loại cơ sở dữ liệu và chạy mượt mà trên các máy chủ web. Tại Vietnix, chúng tôi không chỉ giới thiệu những khái niệm cơ bản về PHP mà còn cung cấp các ví dụ thực tế giúp bạn dễ dàng hiểu và áp dụng PHP vào việc phát triển website. Bên cạnh đó, Vietnix cũng thường xuyên cập nhật các bài viết mới về tính năng, mẹo và thủ thuật lập trình, giúp bạn giải quyết các thách thức phức tạp, từ đó không ngừng nâng cao và hoàn thiện kỹ năng lập trình của mình.
html
CSS
javascript
sql
python
php
c
c++
bootstrap
react
mysql
reactjs
vuejs
Javascript Tutorials
01/07/2024
4 phút đọc
Theo dõi Vietnix trên

Tìm hiểu về hàm mysqli_real_escape_string() trong PHP

Hàm mysqli_real_escape_string() là một hàm quan trọng trong PHP được sử dụng để bảo vệ các truy vấn SQL khỏi các cuộc tấn công injection SQL. Hàm này giúp tránh được các ký tự đặc biệt có thể làm suy đoán và thực hiện các thao tác không mong muốn trên cơ sở dữ liệu nhờ vào khả năng xử lý dữ liệu người dùng trước khi chúng được thêm vào các truy vấn SQL. Hãy cùng Vietnix tìm hiểu thêm về hàm mysqli_real_escape_string() trong PHP qua bài viết sau đây.

Hàm mysqli_real_escape_string() trong PHP là gì?

Hàm mysqli_real_escape_string() là một hàm tích hợp sẵn trong PHP, được sử dụng để thoát tất cả các ký tự đặc biệt đã sử dụng trong truy vấn SQL. Hàm này được sử dụng trước khi chèn một chuỗi vào cơ sở dữ liệu, vì nó loại bỏ mọi ký tự đặc biệt có thể ảnh hưởng đến hoạt động truy vấn. Tuy nhiên, bạn cũng cần lưu ý rằng việc sử dụng mysqli_real_escape_string() không phải là biện pháp an toàn tuyệt đối và không nên thay thế cho các biện pháp bảo mật khác như sử dụng câu lệnh thực thi tham số hoặc PDO để tránh injection SQL.

Hàm mysqli_real_escape_string() trong PHP
Hàm mysqli_real_escape_string() trong PHP

Khi bạn nhận dữ liệu từ người dùng thông qua các biểu mẫu web hoặc các nguồn khác, việc sử dụng hàm mysqli_real_escape_string() trở nên quan trọng để đảm bảo rằng dữ liệu đó không thể làm hỏng cú pháp của truy vấn SQL. Hàm này sẽ tự động thêm các ký tự thoát (“\”) vào trước các ký tự đặc biệt như nháy đơn (‘), nháy kép (“), dấu gạch chéo ngược () và nhiều ký tự khác.

Khi sử dụng các chuỗi đơn giản, có khả năng các ký tự đặc biệt như dấu gạch chéo ngược và dấu nháy đơn được bao gồm trong chúng (đặc biệt khi chúng nhận dữ liệu trực tiếp từ biểu mẫu nhập dữ liệu đó). Chúng được coi là một phần của chuỗi truy vấn và cản trở hoạt động bình thường của nó.

Mọi người cũng đọc:

Ví dụ về hàm mysqli_real_escape_string() trong PHP

<?php

$connection = mysqli_connect(
	"localhost", "root", "", "Persons");
		
// Check connection
if (mysqli_connect_errno()) {
	echo "Database connection failed.";
}

$firstname = "Robert'O";
$lastname = "O'Connell";

$sql="INSERT INTO Persons (FirstName, LastName)
			VALUES ('$firstname', '$lastname')";


if (mysqli_query($connection, $sql)) {
	
	// Print the number of rows inserted in
	// the table, if insertion is successful
	printf("%d row inserted.\n",
			$mysqli->affected_rows);
}
else {
	
	// Query fails because the apostrophe in
	// the string interferes with the query
	printf("An error occurred!");
}

?>

Trong đoạn mã trên, truy vấn không thành công vì dấu nháy đơn được coi là một phần của truy vấn khi nó được thực thi bằng mysqli_query(). Giải pháp là bạn sử dụng mysqli_real_escape_string() trước khi sử dụng chuỗi trong truy vấn.

<?php

$connection = mysqli_connect(
		"localhost", "root", "", "Persons");

// Check connection
if (mysqli_connect_errno()) {
	echo "Database connection failed.";
}
	
$firstname = "Robert'O";
$lastname = "O'Connell";

// Remove the special characters from the
// string using mysqli_real_escape_string

$lastname_escape = mysqli_real_escape_string(
					$connection, $lastname);
					
$firstname_escape = mysqli_real_escape_string(
					$connection, $firstname);

$sql="INSERT INTO Persons (FirstName, LastName)
			VALUES ('$firstname_escape', '$lastname_escape')";

if (mysqli_query($connection, $sql)) {
	
	// Print the number of rows inserted in
	// the table, if insertion is successful
	printf("%d row inserted.\n", $mysqli->affected_rows);
}

?>

Output như sau:

1 row inserted.

Lời kết

Vietnix hy vọng nội dung bài viết trên đã giúp bạn hiểu rõ hơn về hàm mysqli_real_escape_string() trong PHP. Ngoài ra, bạn cũng có thể tham khảo thêm các bài viết khác tại vietnix.vn để hiểu hơn về lập trình, chúc bạn thành công!

Cao Lê Viết Tiến

PHP Leader
tại
Vietnix

Kết nối với mình qua

Icon Quote
Icon Quote

Học lập trình online cùng vietnix

Học lập trình online cùng Vietnix

PHPXem thêmThu gọn