Mysqli chuỗi thoát thực trong php

Cái được sử dụng tùy thuộc vào việc bạn đang sử dụng tiện ích mở rộng MySQLi hay tiện ích mở rộng MySQL

// procedural mysqli 
$db = new mysqli; 
$sql = sprintf("INSERT INTO table (id,name,email,comment) VALUES (NULL,'%s','%s','%s')", 
   mysqli_real_escape_string($db,$name), 
   mysqli_real_escape_string($db,$email), 
   mysqli_real_escape_string($db,$comment) ); 

// mysql 
$conn = mysql_connect(); 
$sql = sprintf("INSERT INTO table (id,name,email,comment) VALUES (NULL,'%s','%s','%s')", 
   mysql_real_escape_string($name,$conn), 
   mysql_real_escape_string($email,$conn), 
   mysql_real_escape_string($comment,$conn) );  


cú pháp

mysqli_real_escape_string(connection,escapestring);

Định nghĩa và cách sử dụng

Hàm thoát các ký tự đặc biệt trong chuỗi cho câu lệnh SQL

Giá trị trả về

Nó trả về chuỗi thoát

Thông số

Sr. STT Thông số và Mô tả 1

sự liên quan

Nó chỉ định về kết nối để sử dụng

2

dây thoát hiểm

Nó chỉ định về chuỗi không thoát

Thí dụ

Hãy thử ví dụ sau

php_function_reference. htm

Hàm mysqli_real_escape_string() / mysqli. real_escape_string thoát các ký tự đặc biệt trong chuỗi để sử dụng trong câu lệnh SQL

cú pháp

Phong cách hướng đối tượng

string mysqli::escape_string ( string $escapestr )
string mysqli::real_escape_string ( string $escapestr )

phong cách thủ tục

string mysqli_real_escape_string ( mysqli $link , string $escapestr )

Tham số

NameDescripRequired/OptionallinkMột mã định danh liên kết được trả về bởi mysqli_connect() hoặc mysqli_init() Chỉ cần thiết cho kiểu thủ tục và Tùy chọn cho styleescapestr hướng đối tượngChuỗi cần thoát
Các ký tự được mã hóa là NUL (ASCII 0), \n, \r, \, ', ", và Control-Z. Yêu cầu

Cách sử dụng. phong cách thủ tục

mysqli_real_escape_string(connection,escapestring);

Tham số

NameDescriptionRequired/OptionalconnectionChỉ định kết nối MySQL để sử dụngRequiredescapestringChuỗi cần thoát. Các ký tự được mã hóa là NUL (ASCII 0), \n, \r, \, ', ", và Control-Z. Yêu cầu

Giá trị trả về

Trả về một chuỗi thoát

Phiên bản. PHP5, PHP7

Ví dụ về phong cách hướng đối tượng

query("CREATE TEMPORARY TABLE myCity LIKE City");

$city = "Kalkata";

/* this query will fail, cause we didn't escape $city */
if (!$mysqli->query("INSERT into myCity (Name) VALUES ('$city')")) {
    printf("Error: %s\n", $mysqli->sqlstate);
}

$city = $mysqli->real_escape_string($city);

/* this query with escaped $city will work */
if ($mysqli->query("INSERT into myCity (Name) VALUES ('$city')")) {
    printf("%d Row inserted.\n", $mysqli->affected_rows);
}

$mysqli->close();
?>

Ví dụ về phong cách thủ tục

________số 8_______

đầu ra

Error: 42000
1 Row inserted.

Xem thêm

Tham chiếu hàm PHP

Trước. real_connect
Kế tiếp. real_query



Theo dõi chúng tôi trên FacebookTwitter để cập nhật thông tin mới nhất.

PHP. Lời khuyên trong ngày

PHP: What is <=> (the 'Spaceship' Operator) in PHP 7?

The <=> ("Spaceship") operator will offer combined comparison in that it will :

Return 0 if values on either side are equal
Return 1 if the value on the left is greater
Return -1 if the value on the right is greater

Các quy tắc được sử dụng bởi toán tử so sánh kết hợp giống như các toán tử so sánh hiện đang được sử dụng bởi PHP viz. . Những người có nền tảng lập trình Perl hoặc Ruby có thể đã quen thuộc với toán tử mới này được đề xuất cho PHP7

PHP. hàm mysqli_real_escape_string()

Cải thiện bài viết

Lưu bài viết

Thích bài viết

  • Độ khó. Dễ dàng
  • Cập nhật lần cuối. 16 tháng 10 năm 2021

  • Đọc
  • Bàn luận
  • khóa học
  • Luyện tập
  • Băng hình
  • Cải thiện bài viết

    Lưu bài viết

    Hàm mysqli_real_escape_string() là một hàm có sẵn trong PHP được sử dụng để thoát khỏi tất cả các ký tự đặc biệt để sử dụng trong truy vấn SQL. Nó đượ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ỏ bất kỳ ký tự đặc biệt nào có thể cản trở hoạt động truy vấn.  
    Khi các chuỗi đơn giản được sử dụng, 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 là khi chúng lấy dữ liệu trực tiếp từ một biểu mẫu mà dữ liệu đó được nhập vào). Đây được coi là một phần của chuỗi truy vấn và can thiệp vào hoạt động bình thường của nó.  
     

    php




     

    $connection = mysqli_connect(

        "localhost","root","",12

    3

    4

    5 6

        8 9$connection0

    $connection1

    $connection2

    $connection3 $connection4$connection5$connection0

    $connection7 $connection4$connection9$connection0

    $connection2

    = mysqli_connect(2_______16_______3

    = mysqli_connect(4_______16_______5= mysqli_connect(6,= mysqli_connect(8= mysqli_connect(9

    $connection2

    $connection2

    5     3$connection___,= mysqli_connect(2    7

        

        "localhost"0

        "localhost"2

        "localhost"4_______18_______5,

    = mysqli_connect(4_______18_______8"localhost"9

    $connection1

    ,1 ,2

        

        ,5

        ,7

        "localhost"4_______20_______02

    $connection1

    $connection2

    "root"4

    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à sử dụng mysqli_real_escape_string() trước khi sử dụng các chuỗi trong truy vấn
     

    php




    $connection2

    $connection = mysqli_connect(

    "root"9_______18_______,"root","",12

     

    4

    5 6

        8 9$connection0

    $connection1

    ""6

    $connection3 $connection4$connection5$connection0

    $connection7 $connection4$connection9$connection0

    $connection2

    06

    07

    $connection2

    09 10

    11$connection,$connection72

    11

    17 10

    11_______15_______,$connection32

    $connection2

    = mysqli_connect(2_______16_______3

    = mysqli_connect(4_______16_______529,31= mysqli_connect(9

     

    5     3$connection___,= mysqli_connect(2    7

        

        "localhost"0

        "localhost"2

        "localhost"4_______18_______5,"localhost"8"localhost"9

    $connection1

    $connection2

    "root"4

    đầu ra.  
     

    1 row inserted. 

     


    Ghi chú cá nhân của tôi arrow_drop_up

    Tiết kiệm

    Vui lòng Đăng nhập để nhận xét.

    Tại sao việc sử dụng mysqli_real_escape_string() lại quan trọng như vậy?

    Mục đích của hàm mysqli_real_escape_string là cố gắng đảm bảo rằng dữ liệu được gửi đến máy chủ mysql là an toàn - hàm này cố gắng .

    Tại sao mysqli_real_escape_string không hoạt động?

    Các từ khóa đang hoạt động, mysqli_real_escape_string() sẽ không hoạt động--sẽ không thoát khỏi dấu nháy đơn-- nếu nó không có quyền truy cập vào kết nối cơ sở dữ liệu với CHARSET đã thiết lập< . Vấn đề phải là do kết nối cơ sở dữ liệu hoặc bộ ký tự không được đặt. Đầu tiên, sửa lỗi cú pháp và sau đó thử lại. . To the problem should be either with the database connection or the charset not being set. First, fix the syntax error and then try again.

    Tôi có thể sử dụng cái gì thay cho mysql_real_escape_string?

    mysql_real_escape_string. Tiện ích mở rộng này không được dùng nữa kể từ PHP 5. 5. 0 và sẽ bị xóa trong tương lai. Thay vào đó, nên sử dụng MySQLi hoặc phần mở rộng PDO_MySQL .

    Đầu ra của Mysql_escape_string là gì?

    mysql_escape_string là một trong các hàm mở rộng mysql của PHP. Nó thoát khỏi một chuỗi được cung cấp làm tham số cho hàm . Thoát có nghĩa là thêm dấu gạch chéo ngược ( \ ) vào các ký tự đặc biệt. mysql_escape_string được thiết kế để sử dụng với chức năng mysql_query, để chuyển các tham số truy vấn MySQL sang truy vấn một cách an toàn.