Mysqli_real_escape_string không có kết nối

Tôi muốn có một chức năng hoạt động như mysql_real_escape_string mà không cần kết nối với cơ sở dữ liệu vì đôi khi tôi cần thực hiện thử nghiệm khô mà không cần kết nối DB. mysql_escape_string không được dùng nữa và do đó là điều không mong muốn. Một số phát hiện của tôi

http. //www. gamedev. mạng/cộng đồng/diễn đàn/chủ đề. asp?topic_id=448909

http. //w3schools. invisionzone. com/chỉ mục. php?showtopic=20064

Giải pháp tốt nhất

Không thể thoát khỏi chuỗi một cách an toàn nếu không có kết nối DB. mysql_real_escape_string() và các câu lệnh đã chuẩn bị cần có kết nối với cơ sở dữ liệu để chúng có thể thoát khỏi chuỗi bằng cách sử dụng bộ ký tự thích hợp - nếu không thì vẫn có thể tấn công SQL injection bằng cách sử dụng các ký tự nhiều byte

Nếu bạn chỉ đang thử nghiệm, thì bạn cũng có thể sử dụng mysql_escape_string(), nó không đảm bảo 100% chống lại các cuộc tấn công SQL injection, nhưng không thể xây dựng bất kỳ thứ gì an toàn hơn nếu không có kết nối DB

Giải pháp liên quan

Mysql – Sao chép/nhân bản cơ sở dữ liệu mà không cần sử dụng thesqldump

Tôi có thể thấy bạn đã nói rằng bạn không muốn sử dụng mysqldump, nhưng tôi đã truy cập trang này trong khi tìm kiếm một giải pháp tương tự và những người khác cũng có thể tìm thấy nó. Với ý nghĩ đó, đây là một cách đơn giản để sao chép cơ sở dữ liệu từ dòng lệnh của máy chủ windows

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",mysql_real_escape_string()0,mysql_real_escape_string()2,12

    3

    4

    5 6

        8 9$connection0

    $connection1

    $connection2

    $connection3 $connection4____55$connection0

    $connection7 $connection4____59____50

    $connection2

    = mysqli_connect(2= mysqli_connect(3

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

    $connection2

    $connection2

    5     3$connection____9= mysqli_connect(2    7

        

        "localhost"0

        "localhost"2

        "localhost"4____85,

    = mysqli_connect(4"localhost"8"localhost"9

    $connection1

    ,1 ,2

        

        ,5

        ,7

        "localhost"4mysql_real_escape_string()002

    $connection1

    $connection2

    mysql_real_escape_string()04

    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(

    mysql_real_escape_string()09"localhost",mysql_real_escape_string()0,mysql_real_escape_string()2,12

     

    4

    5 6

        8 9$connection0

    $connection1

    mysql_real_escape_string()26

    $connection3 $connection4____55$connection0

    $connection7 $connection4____59____50

    $connection2

    06

    07

    $connection2

    09 10

    11$connection____9$connection72

    11

    17 10

    11$connection____9$connection32

    $connection2

    = mysqli_connect(2= mysqli_connect(3

    = mysqli_connect(4= mysqli_connect(5____429,31= mysqli_connect(9

     

    5     3$connection____9= mysqli_connect(2    7

        

        "localhost"0

        "localhost"2

        "localhost"4"localhost"5______9"localhost"8"localhost"9

    $connection1

    $connection2

    mysql_real_escape_string()04

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

    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.

    Khi nào thì sử dụng mysql_real_escape_string?

    Định nghĩa và cách sử dụng . escapes special characters in a string for use in an SQL query, taking into account the current character set of the connection.

    mysql_real_escape_string có bị phản đối không?

    Tiện ích mở rộng này không được dùng trong PHP 5. 5. 0 và nó đã bị xóa trong PHP 7. 0 .