Hướng dẫn php mysql escape single quote - php mysql thoát báo giá đơn

Tôi có một vấn đề khó hiểu mà tôi dường như không thể hiểu được ...

Tôi có hai câu lệnh SQL:

  • Đầu tiên nhập thông tin từ một biểu mẫu vào cơ sở dữ liệu.
  • Cái thứ hai lấy dữ liệu từ cơ sở dữ liệu được nhập ở trên, gửi email và sau đó ghi lại các chi tiết của giao dịch

Vấn đề là có vẻ như một trích dẫn duy nhất đang kích hoạt lỗi MySQL trên mục thứ hai! Trường hợp đầu tiên hoạt động mà không có vấn đề, nhưng trường hợp thứ hai kích hoạt mysql_error().

Dữ liệu từ một biểu mẫu có được xử lý khác với dữ liệu được ghi dưới dạng không?

Truy vấn 1 - Điều này hoạt động mà không có vấn đề (và không thoát khỏi trích dẫn duy nhất)

$result = mysql_query("INSERT INTO job_log
(order_id, supplier_id, category_id, service_id, qty_ordered, customer_id, user_id, salesperson_ref, booking_ref, booking_name, address, suburb, postcode, state_id, region_id, email, phone, phone2, mobile, delivery_date, stock_taken, special_instructions, cost_price, cost_price_gst, sell_price, sell_price_gst, ext_sell_price, retail_customer, created, modified, log_status_id)
VALUES
('$order_id', '$supplier_id', '$category_id', '{$value['id']}', '{$value['qty']}', '$customer_id', '$user_id', '$salesperson_ref', '$booking_ref', '$booking_name', '$address', '$suburb', '$postcode', '$state_id', '$region_id', '$email', '$phone', '$phone2', '$mobile', STR_TO_DATE('$delivery_date', '%d/%m/%Y'), '$stock_taken', '$special_instructions', '$cost_price', '$cost_price_gst', '$sell_price', '$sell_price_gst', '$ext_sell_price', '$retail_customer', '".date('Y-m-d H:i:s', time())."', '".date('Y-m-d H:i:s', time())."', '1')");

Truy vấn 2 - Điều này thất bại khi nhập tên với một trích dẫn duy nhất (ví dụ: O'Brien)

$query = mysql_query("INSERT INTO message_log
(order_id, timestamp, message_type, email_from, supplier_id, primary_contact, secondary_contact, subject, message_content, status)
VALUES
('$order_id', '".date('Y-m-d H:i:s', time())."', '$email', '$from', '$row->supplier_id', '$row->primary_email' ,'$row->secondary_email', '$subject', '$message_content', '1')");

Hướng dẫn php mysql escape single quote - php mysql thoát báo giá đơn

Là một nhà phát triển PHP/MySQL, bạn có một số thực tiễn đáng chú ý và sử dụng mọi thời điểm khác. Một trong những là làm thế nào để thoát khỏi báo giá đơn trong PHP trong khi làm việc với cơ sở dữ liệu MySQL. Trong bài viết này, tôi sẽ minh họa cách thoát khỏi trích dẫn đơn trong PHP/MySQLSingle Quote in PHP/MySQL

Thoát khỏi đề cập đến quá trình mã hóa dữ liệu chứa các ký tự để MySQL diễn giải chính xác. Để làm điều này, bạn phải thoát khỏi các chuỗi với chức năng PHP được gọi là mysql_real_escape_string. Điều này có nghĩa là bạn phải chạy chức năng này trong PHP trước khi chuyển truy vấn của bạn đến cơ sở dữ liệu. Thực tiễn tốt bình thường là thoát khỏi bất kỳ dữ liệu nào đi vào cơ sở dữ liệu của bạn từ một nguồn vĩnh cửu để tránh tiêm SQL tiềm năng.refers to the process of encoding data containing characters so that MySQL interprets it correctly. To do this, you MUST escape strings with a PHP function known as mysql_real_escape_string. This means that you have to run this function in PHP before passing your query to the database. Normal good practice is to escape any data that comes into your database from an eternal source so as to avoid potential SQL injection.

Bạn phải thoát dữ liệu của bạn & nbsp; trước & nbsp; bạn xây dựng truy vấn của mình. Ngoài ra, bạn có thể xây dựng truy vấn của mình theo chương trình bằng cách sử dụng các cấu trúc vòng lặp PHP và & NBSP; ________ 8:

Ví dụ 1: Sử dụng kiểu định hướng đối tượng

Trong khi sử dụng phương thức hướng đối tượng, bạn thoát khỏi các ký tự trong các chuỗi như hình dưới đây:

 connect_errno) {
  echo "Failed to connect to MySQL: " . $conn -> connect_error;
  exit();
}

// Escape special characters, if any
$fname = $conn -> real_escape_string($_POST['studentname']);
$lname = $conn -> real_escape_string($_POST['lastname']);
$grade = $conn -> real_escape_string($_POST['grade']);

$quest="INSERT INTO students (fName, LName, grade) VALUES ('$fname', '$lname', '$grade')";
 $stmt = $conn->prepare('SELECT * FROM items WHERE category = ?');
 $stmt->bind_param('s', $categ); 

 $stmt->execute();

if (!$conn -> query($quest)) {
  printf("%d Row inserted Successfully!\n", $conn->affected_rows);
}

$conn -> close();
?>



Advertisement

Ví dụ 2: Sử dụng phương pháp thủ tục


Advertisement

Làm thế nào nó hoạt động

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

Real_escape_String () / mySQLI_REAL_ESCAPE_STRING () Hàm thoát khỏi các ký tự đặc biệt trong một chuỗi để sử dụng trong truy vấn SQL, có tính đến bộ ký tự hiện tại của kết nối. Ví dụ: trong khi làm việc với các chuỗi sử dụng các trích dẫn đơn lẻ, như những người khác tên, ví dụ: O hèNeil, bạn cần xử lý việc này bằng cách sử dụng chức năng real_escape_string () / mysqli_real_escape_string ().

Hàm này được sử dụng để tạo chuỗi SQL hợp pháp mà bạn có thể sử dụng trong câu lệnh SQL. Chuỗi đã cho được mã hóa để tạo ra một chuỗi SQL đã thoát, có tính đến bộ ký tự hiện tại của kết nối.

Làm cách nào để thoát khỏi một trích dẫn duy nhất trong mysql?

Tương tự, chúng ta có thể sử dụng Backslash để thoát khỏi các trích dẫn đơn và trích dẫn gấp đôi để chèn các giá trị vào bảng MySQL.use backslash to escape single quotes and double quotes to insert values into MySQL table.

Làm thế nào Escape Trích dẫn đơn PHP?

Trường hợp đặc biệt là nếu bạn hiển thị một trình điều khiển đơn theo nghĩa đen, hãy thoát nó bằng dấu gạch chéo ngược (\) và nếu bạn muốn hiển thị dấu gạch chéo ngược, bạn có thể thoát nó bằng một dấu gạch chéo ngược khác (\\).Thí dụ:escape it with a backslash(\) and if you want to display a backslash, you can escape it with another backslash(\\). Example:

Làm cách nào để thoát một chuỗi trong PHP?

Có thể thực hiện các ký tự trong một chuỗi bằng cách sử dụng \ (Backslash) trước khi ký tự bạn muốn trốn thoát.using a \ (backslash) before the character you want to escape.

Làm cách nào để cho phép một trích dẫn duy nhất trong truy vấn MySQL?

Chức năng trích dẫn () trong MySQL Chức năng này trong MySQL được sử dụng để trả về kết quả có thể được sử dụng như một giá trị dữ liệu đã thoát ra đúng trong câu lệnh SQL.Chuỗi được trả về được đặt kèm theo các dấu ngoặc kép và với mỗi trường hợp của dấu gạch chéo ngược (\), trích dẫn đơn ('), ascii null và điều khiển+z trước một dấu gạch chéo ngược.The string is returned enclosed by single quotation marks and with each instance of backslash (\), single quote ('), ASCII NULL, and Control+Z preceded by a backslash.