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.

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ó.
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.
Vietnix – Nhà cung cấp giải pháp hạ tầng số toàn diện cho doanh nghiệp và cá nhân
Với hơn 12 năm kinh nghiệm, Vietnix tự hào là đơn vị cung cấp dịch vụ Hosting, thuê VPS và Thuê máy chủ uy tín tại Việt Nam. Được xây dựng trên nền tảng hạ tầng mạnh mẽ và công nghệ tiên tiến, Vietnix cam kết mang đến giải pháp tối ưu giúp cá nhân, doanh nghiệp vận hành hệ thống một cách ổn định, an toàn và hiệu quả. Không chỉ cung cấp dịch vụ chất lượng, Vietnix còn tập trung vào trải nghiệm người dùng với chính sách hỗ trợ 24/7, đảm bảo mọi vấn đề kỹ thuật đều được giải quyết nhanh chóng.
Một trong những dịch vụ nổi bật của Vietnix chính là VPS AMD, được thiết kế dành cho những ai cần một giải pháp hiệu suất cao, chi phí hợp lý. Sử dụng bộ vi xử lý AMD EPYC mạnh mẽ kết hợp với ổ cứng NVMe tốc độ cao, VPS AMD Vietnix đảm bảo tốc độ xử lý nhanh, ổn định và khả năng chịu tải tốt. Đây là lựa chọn lý tưởng cho website doanh nghiệp, ứng dụng, hệ thống phần mềm và các dự án cần tài nguyên mạnh mẽ. Với đa dạng gói dịch vụ linh hoạt, khách hàng dễ dàng tìm thấy giải pháp phù hợp nhất, đồng thời được hưởng chính sách hỗ trợ tận tâm từ đội ngũ kỹ thuật Vietnix.
Thông tin liên hệ:
- Hotline: 18001093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Website: https://vietnix.vn/
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!
Mọi người cũng xem