Hướng dẫn how do i escape a single quote in mysql? - làm cách nào để thoát khỏi một câu trích dẫn duy nhất trong mysql?

Có thể không có chủ đề, nhưng có lẽ bạn đã đến đây để tìm cách vệ sinh đầu vào văn bản từ dạng HTML, để khi người dùng nhập ký tự dấu nháy đơn, nó không bị lỗi khi bạn cố gắng viết văn bản vào SQL Bảng dựa trên DB. Có một vài cách để làm điều này, và bạn cũng có thể muốn đọc về SQL tiêm. Dưới đây là một ví dụ về việc sử dụng các câu lệnh đã chuẩn bị và các tham số ràng buộc trong PHP:

$input_str = "Here's a string with some apostrophes (')";
// sanitise it before writing to the DB (assumes PDO)
$sql = "INSERT INTO `table` (`note`) VALUES (:note)";
try {
    $stmt = $dbh->prepare($sql);
    $stmt->bindParam(':note', $input_str, PDO::PARAM_STR);
    $stmt->execute();
} catch (PDOException $e) {
    return $dbh->errorInfo();
}
return "success";

Trong trường hợp đặc biệt mà bạn có thể muốn lưu trữ dấu nháy đơn của mình bằng cách sử dụng tài liệu tham khảo thực thể HTML của họ, PHP có hàm htmlspecialchars () sẽ chuyển đổi chúng thành

mysql> select 'test\'s' as test_string;
+-------------+
| test_string |
+-------------+
| test's      |
+-------------+
3. Như các ý kiến ​​chỉ ra, điều này không nên được sử dụng để thay thế cho việc vệ sinh thích hợp, theo ví dụ được đưa ra.

Đôi khi bạn có thể cần lưu trữ trích dẫn đơn, trích dẫn kép, apostrophe, backticks và các ký tự đặc biệt khác trong MySQL. Trong bài viết này, chúng tôi sẽ xem xét cách thoát khỏi trích dẫn đơn, trích dẫn kép, dấu nháy đơn, backticks và các nhân vật đặc biệt khác.

Bạn có thể dễ dàng thoát khỏi các trích dẫn đơn, trích dẫn kép, apostrophe, backticks và các ký tự đặc biệt khác bằng cách thêm dấu gạch chéo ngược (\) trước ký tự đó.

Ở đây, một truy vấn MySQL thoát khỏi các trích dẫn đơn lẻ.

mysql> select 'test\'s' as test_string;
+-------------+
| test_string |
+-------------+
| test's      |
+-------------+

Như bạn có thể thấy trích dẫn duy nhất đã được thoát ra và được hiển thị trong kết quả truy vấn.

Tương tự, đây là truy vấn MySQL để thoát khỏi trích dẫn kép

mysql> select 'test\"s' as test_string;
+-------------+
| test_string |
+-------------+
| test"s      |
+-------------+

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.

Hãy để chúng tôi nói rằng bạn có bảng sau Escape_characters_demo (id, chuỗi)

mysql> create table escape_characters_demo(
       id int,
       string varchar(255)
       );

Bây giờ chúng ta hãy thử chèn các văn bản với các trích dẫn đơn, backticks và đôi và các kết hợp của chúng, sử dụng dấu gạch chéo ngược.

mysql> mysql> insert into escape_characters_demo(id, string)
       values(1, 'test\'s'),
       (2, 'test\"s'),
       (3, 'test\`s'),
       (4, 'test\'s and best\'s'),
       (5, 'test\"s and best\"s'),
       (6, 'test\"s and best\'s');

mysql> select * from escape_characters_demo;
+------+-------------------+
| id   | string            |
+------+-------------------+
|    1 | test's            |
|    2 | test"s            |
|    3 | test`s            |
|    4 | test's and best's |
|    5 | test"s and best"s |
|    6 | test"s and best's |
+------+-------------------+

Như bạn có thể thấy ở trên, chúng tôi có thể thoát khỏi các trích dẫn đơn, trích dẫn kép, backticks, nhiều trích dẫn đơn và đôi và thậm chí là sự kết hợp của chúng, bằng cách thêm một dấu gạch chéo ngược trước các ký tự đặc biệt này.

Hy vọng, bây giờ bạn có thể dễ dàng thoát khỏi các ký tự đặc biệt trong các truy vấn chọn, chèn và cập nhật của bạn.

UBIQ giúp bạn dễ dàng trực quan hóa dữ liệu và theo dõi chúng trong bảng điều khiển thời gian thực. Hãy thử UBIQ miễn phí.

Bài viết liên quan:

  • về tác giả

Hướng dẫn how do i escape a single quote in mysql? - làm cách nào để thoát khỏi một câu trích dẫn duy nhất trong mysql?

Làm cách nào để bỏ qua một báo giá duy nhất trong mysql?

  1. Trích dẫn (đơn và đôi) được sử dụng xung quanh chuỗi.
  2. Backticks được sử dụng xung quanh số nhận dạng bảng và cột.

Dấu ngoặc kép

Sử dụng dấu ngoặc kép ở đây là một số ví dụ đầu vào và đầu ra:

SELECT "test", "'test'", "''test''", "te""st";

Đầu ra trông như thế này:

Hướng dẫn how do i escape a single quote in mysql? - làm cách nào để thoát khỏi một câu trích dẫn duy nhất trong mysql?

Bao bọc các trích dẫn đơn bên trong các trích dẫn kép sẽ hủy bỏ hành vi dự kiến ​​của các trích dẫn duy nhất trong truy vấn MySQL và thay vào đó coi nó như một phần của chuỗi. Điều này có thể được nhìn thấy trong các cột 2 và 3 trong ví dụ trên.

Chèn hai trích dẫn kép ở giữa chuỗi sẽ hủy bỏ một trong số chúng.

Dấu nháy đơn

Sử dụng các trích dẫn đơn ở đây là một số ví dụ đầu vào và đầu ra:

SELECT 'test', '"test"', '""test""', 'te''st';

Đầu ra trông như thế này:

Hướng dẫn how do i escape a single quote in mysql? - làm cách nào để thoát khỏi một câu trích dẫn duy nhất trong mysql?

Bao bọc các trích dẫn đơn bên trong các trích dẫn kép sẽ hủy bỏ hành vi dự kiến ​​của các trích dẫn duy nhất trong truy vấn MySQL và thay vào đó coi nó như một phần của chuỗi. Điều này có thể được nhìn thấy trong các cột 2 và 3 trong ví dụ trên.

Chèn hai trích dẫn kép ở giữa chuỗi sẽ hủy bỏ một trong số chúng.

Dấu nháy đơn

Sử dụng các trích dẫn đơn ở đây là một số ví dụ đầu vào và đầu ra:

SELECT "They've found this tutorial to be helpful"

Đầu ra trông như thế này:

Hướng dẫn how do i escape a single quote in mysql? - làm cách nào để thoát khỏi một câu trích dẫn duy nhất trong mysql?

Hoặc, nếu bạn cần sử dụng trích dẫn kép để trình bày báo cáo phản hồi của khách hàng trong chuỗi, bạn có thể sử dụng các trích dẫn đơn để bọc toàn bộ chuỗi.

SELECT 'They responded, "We found this tutorial helpful"'

Nếu bạn cần sử dụng trích dẫn đơn và trích dẫn kép trong một chuỗi chứa cả co lại và báo giá, bạn sẽ cần sử dụng dấu gạch chéo ngược ‘'để hủy bỏ ký tự sau. Ví dụ: một chuỗi chứa điều này 'sẽ nhận ra dấu gạch chéo ngược là một hướng dẫn để hủy bỏ ý nghĩa cú pháp trích dẫn đơn và thay vào đó chèn nó vào chuỗi dưới dạng dấu nháy đơn.

SELECT 'They\'ve responded, "We found this tutorial helpful"'

Hướng dẫn how do i escape a single quote in mysql? - làm cách nào để thoát khỏi một câu trích dẫn duy nhất trong mysql?

Backticks

Backticks được sử dụng trong MySQL để chọn các cột và bảng từ nguồn MySQL của bạn. Trong ví dụ dưới đây, chúng tôi đang gọi đến bảng có tiêu đề

mysql> select 'test\'s' as test_string;
+-------------+
| test_string |
+-------------+
| test's      |
+-------------+
4 và cột
mysql> select 'test\'s' as test_string;
+-------------+
| test_string |
+-------------+
| test's      |
+-------------+
5. Sử dụng backticks, chúng tôi đang biểu thị rằng đó là tên cột và bảng.

mysql> select 'test\'s' as test_string;
+-------------+
| test_string |
+-------------+
| test's      |
+-------------+
0

Backticks cho tên cột có thể không cần thiết mặc dù.

mysql> select 'test\'s' as test_string;
+-------------+
| test_string |
+-------------+
| test's      |
+-------------+
1

Cả hai truy vấn này sẽ trả về cùng một kết quả.

Hướng dẫn how do i escape a single quote in mysql? - làm cách nào để thoát khỏi một câu trích dẫn duy nhất trong mysql?

Để tất cả chúng cùng nhau

Truy vấn sau đây sẽ sử dụng tất cả những gì chúng tôi đã học được ở đây, bao gồm các trích dẫn kép, trích dẫn đơn và backticks.

mysql> select 'test\'s' as test_string;
+-------------+
| test_string |
+-------------+
| test's      |
+-------------+
2

Sẽ trở lại:

Hướng dẫn how do i escape a single quote in mysql? - làm cách nào để thoát khỏi một câu trích dẫn duy nhất trong mysql?

Làm cách nào để bỏ qua một báo giá duy nhất trong mysql?

Bạn có thể dễ dàng thoát khỏi các trích dẫn đơn, trích dẫn kép, apostrophe, backticks và các ký tự đặc biệt khác bằng cách thêm dấu gạch chéo ngược (\) trước ký tự đó.Đây là một truy vấn MySQL thoát khỏi các trích dẫn đơn.adding a backslash (\) before that character. Here's a MySQL query that escapes single quotes.

Làm cách nào để bỏ qua một trích dẫn trong SQL?

Phương pháp đơn giản nhất để thoát khỏi các trích dẫn đơn trong SQL là sử dụng hai trích dẫn đơn.Ví dụ: nếu bạn muốn hiển thị giá trị O'Reilly, bạn sẽ sử dụng hai trích dẫn ở giữa thay vì một.Trích dẫn duy nhất là ký tự thoát trong Oracle, SQL Server, MySQL và PostgreSQL.use two single quotes. For example, if you wanted to show the value O'Reilly, you would use two quotes in the middle instead of one. The single quote is the escape character in Oracle, SQL Server, MySQL, and PostgreSQL.

Làm thế nào để bạn thoát khỏi một trích dẫn duy nhất?

Không thoát được được sử dụng với các trích dẫn đơn.Sử dụng một dấu gạch chéo ngược kép làm nhân vật thoát cho dấu gạch chéo ngược.Use a double backslash as the escape character for backslash.

Làm cách nào để thoát khỏi dấu phẩy trong mysql?

Các ký tự đặc biệt như dấu phẩy và trích dẫn phải được "thoát", có nghĩa là bạn đặt dấu gạch chéo ngược của nhân vật để chèn ký tự như một phần của chuỗi MySQL.place a backslash in front of the character to insert the character as a part of the MySQL string.