Hướng dẫn mysql backtick vs single quote - biểu tượng backtick của mysql so với báo giá đơn

Backticks sẽ được sử dụng cho các định danh bảng và cột, nhưng chỉ cần thiết khi định danh là từ khóa dành riêng MySQL hoặc khi định danh chứa các ký tự hoặc ký tự khoảng trắng ngoài một bộ giới hạn (xem bên dưới), nó thường được khuyến nghị để tránh sử dụng từ khóa dành riêng Là số nhận dạng cột hoặc bảng khi có thể, tránh vấn đề trích dẫn.

Các báo giá đơn nên được sử dụng cho các giá trị chuỗi như trong danh sách

// Same thing with some variable replacements
// Here, a variable table name $table is backtick-quoted, and variables
// in the VALUES list are single-quoted 
$query = "INSERT INTO `$table` (`id`, `col1`, `col2`, `date`) VALUES (NULL, '$val1', '$val2', '$date')";
1. Báo giá kép cũng được MySQL hỗ trợ cho các giá trị chuỗi, nhưng các trích dẫn đơn được các RDBM khác chấp nhận rộng rãi hơn, do đó, đó là một thói quen tốt để sử dụng các trích dẫn đơn thay vì gấp đôi.

MySQL cũng mong đợi các giá trị

// Same thing with some variable replacements
// Here, a variable table name $table is backtick-quoted, and variables
// in the VALUES list are single-quoted 
$query = "INSERT INTO `$table` (`id`, `col1`, `col2`, `date`) VALUES (NULL, '$val1', '$val2', '$date')";
2 và
// Same thing with some variable replacements
// Here, a variable table name $table is backtick-quoted, and variables
// in the VALUES list are single-quoted 
$query = "INSERT INTO `$table` (`id`, `col1`, `col2`, `date`) VALUES (NULL, '$val1', '$val2', '$date')";
3 theo nghĩa đen sẽ được trích dẫn đơn như các chuỗi như
// Same thing with some variable replacements
// Here, a variable table name $table is backtick-quoted, and variables
// in the VALUES list are single-quoted 
$query = "INSERT INTO `$table` (`id`, `col1`, `col2`, `date`) VALUES (NULL, '$val1', '$val2', '$date')";
4. Tham khảo tài liệu ngày và thời gian để biết thêm chi tiết, cụ thể là các lựa chọn thay thế để sử dụng dấu gạch nối
// Same thing with some variable replacements
// Here, a variable table name $table is backtick-quoted, and variables
// in the VALUES list are single-quoted 
$query = "INSERT INTO `$table` (`id`, `col1`, `col2`, `date`) VALUES (NULL, '$val1', '$val2', '$date')";
5 làm phân đoạn phân đoạn trong chuỗi ngày.

Vì vậy, bằng cách sử dụng ví dụ của bạn, tôi sẽ xử lý gấp đôi chuỗi PHP và sử dụng các trích dẫn đơn trên các giá trị

// Same thing with some variable replacements
// Here, a variable table name $table is backtick-quoted, and variables
// in the VALUES list are single-quoted 
$query = "INSERT INTO `$table` (`id`, `col1`, `col2`, `date`) VALUES (NULL, '$val1', '$val2', '$date')";
6.
// Same thing with some variable replacements
// Here, a variable table name $table is backtick-quoted, and variables
// in the VALUES list are single-quoted 
$query = "INSERT INTO `$table` (`id`, `col1`, `col2`, `date`) VALUES (NULL, '$val1', '$val2', '$date')";
7 là từ khóa MySQL và giá trị đặc biệt (không), và do đó không được trích xuất.

Không có số nhận dạng bảng hoặc cột này là các từ dành riêng hoặc sử dụng các ký tự yêu cầu trích dẫn, nhưng dù sao tôi cũng đã trích dẫn chúng bằng backticks (nhiều hơn về điều này sau ...).

Các chức năng có nguồn gốc từ RDBM (ví dụ:

// Same thing with some variable replacements
// Here, a variable table name $table is backtick-quoted, and variables
// in the VALUES list are single-quoted 
$query = "INSERT INTO `$table` (`id`, `col1`, `col2`, `date`) VALUES (NULL, '$val1', '$val2', '$date')";
8 trong MySQL) không được trích dẫn, mặc dù các đối số của chúng phải tuân theo cùng một chuỗi hoặc định danh trích dẫn các quy tắc đã được đề cập.

Backtick (`)
table & column ───────┬─────┬──┬──┬──┬────┬──┬────┬──┬────┬──┬───────┐
                      ↓     ↓  ↓  ↓  ↓    ↓  ↓    ↓  ↓    ↓  ↓       ↓
$query = "INSERT INTO `table` (`id`, `col1`, `col2`, `date`, `updated`) 
                       VALUES (NULL, 'val1', 'val2', '2001-01-01', NOW())";
                               ↑↑↑↑  ↑    ↑  ↑    ↑  ↑          ↑  ↑↑↑↑↑ 
Unquoted keyword          ─────┴┴┴┘  │    │  │    │  │          │  │││││
Single-quoted (') strings ───────────┴────┴──┴────┘  │          │  │││││
Single-quoted (') DATE    ───────────────────────────┴──────────┘  │││││
Unquoted function         ─────────────────────────────────────────┴┴┴┴┘    

Nội suy biến

Các mẫu trích dẫn cho các biến không thay đổi, mặc dù nếu bạn có ý định nội suy các biến trực tiếp trong một chuỗi, nó phải được trích dẫn kép trong PHP. Chỉ cần đảm bảo rằng bạn đã thoát đúng các biến để sử dụng trong SQL. (Thay vào đó, nên sử dụng một API hỗ trợ các câu lệnh được chuẩn bị, làm bảo vệ chống tiêm SQL).

// Same thing with some variable replacements
// Here, a variable table name $table is backtick-quoted, and variables
// in the VALUES list are single-quoted 
$query = "INSERT INTO `$table` (`id`, `col1`, `col2`, `date`) VALUES (NULL, '$val1', '$val2', '$date')";

Tuyên bố chuẩn bị

Khi làm việc với các tuyên bố đã chuẩn bị, hãy tham khảo tài liệu để xác định xem các chủ sở hữu trình bày của tuyên bố có được trích dẫn hay không. Các API phổ biến nhất có sẵn trong PHP, PDO và MySQLI, mong đợi những người giữ chỗ không được chứng minh, cũng như hầu hết các API tuyên bố đã chuẩn bị trong các ngôn ngữ khác:

// PDO example with named parameters, unquoted
$query = "INSERT INTO `table` (`id`, `col1`, `col2`, `date`) VALUES (:id, :col1, :col2, :date)";

// MySQLi example with ? parameters, unquoted
$query = "INSERT INTO `table` (`id`, `col1`, `col2`, `date`) VALUES (?, ?, ?, ?)";

Các ký tự tái lập trích dẫn trích dẫn trong số nhận dạng:

Theo tài liệu MySQL, bạn không cần phải trích dẫn số nhận dạng (BackTick) bằng cách sử dụng bộ ký tự sau:

ASCII:

// Same thing with some variable replacements
// Here, a variable table name $table is backtick-quoted, and variables
// in the VALUES list are single-quoted 
$query = "INSERT INTO `$table` (`id`, `col1`, `col2`, `date`) VALUES (NULL, '$val1', '$val2', '$date')";
9 (chữ cái Latin cơ bản, chữ số 0-9, đô la, dấu gạch dưới)

Bạn có thể sử dụng các ký tự ngoài tập hợp đó làm số nhận dạng bảng hoặc cột, bao gồm cả khoảng trắng chẳng hạn, nhưng sau đó bạn phải trích dẫn (backtick) chúng.

Ngoài ra, mặc dù các số là ký tự hợp lệ cho các định danh, số nhận dạng không thể chỉ bao gồm các số. Nếu họ làm, họ phải được gói trong backticks.

Sử dụng backticks, báo giá đôi và trích dẫn đơn khi truy vấn cơ sở dữ liệu MySQL có thể được đưa xuống đến hai điểm cơ bản.

  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 mysql backtick vs single quote - biểu tượng backtick của mysql so với báo giá đơn

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 mysql backtick vs single quote - biểu tượng backtick của mysql so với báo giá đơn

Như được hiển thị trong phần trình diễn ở trên, các trích dẫn đơn hoạt động giống như cách trích dẫn kép trong các bối cảnh này.

Sử dụng trích dẫn đơn và trích dẫn đôi với nhau

Thường thì sẽ có một cơn co thắt trong một chuỗi, hoặc báo giá trực tiếp. Trong các tình huống như trong các báo cáo khảo sát NPS hoặc các mẫu phản hồi của khách hàng khác, đây thường là trường hợp. Trong những trường hợp này sử dụng trích dẫn kép để bọc một chuỗi văn bản có chứa một cơn co thắt giống như chúng sẽ giữ một trích dẫn duy nhất trong chuỗi dưới dạng dấu nháy đơn.

Trong trường hợp này, việc trình bày một chuỗi với một cơn co thắt sẽ trông như thế này:

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

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

Hướng dẫn mysql backtick vs single quote - biểu tượng backtick của mysql so với báo giá đơn

Như được hiển thị trong phần trình diễn ở trên, các trích dẫn đơn hoạt động giống như cách trích dẫn kép trong các bối cảnh này.

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

Sử dụng trích dẫn đơn và trích dẫn đôi với nhau

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

Hướng dẫn mysql backtick vs single quote - biểu tượng backtick của mysql so với báo giá đơn

Thường thì sẽ có một cơn co thắt trong một chuỗi, hoặc báo giá trực tiếp. Trong các tình huống như trong các báo cáo khảo sát NPS hoặc các mẫu phản hồi của khách hàng khác, đây thường là trường hợp. Trong những trường hợp này sử dụng trích dẫn kép để bọc một chuỗi văn bản có chứa một cơn co thắt giống như chúng sẽ giữ một trích dẫn duy nhất trong chuỗi dưới dạng dấu nháy đơn.

Trong trường hợp này, việc trình bày một chuỗi với một cơn co thắt sẽ trông như thế này:

    SELECT `Album`.`Title`
    FROM `Album` AS `Album`
    GROUP BY `Album`.`Title`
    ORDER BY `Title` ASC
    LIMIT 10;

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 Album.Title
    FROM Album AS Album
    GROUP BY Album.Title
    ORDER BY Title ASC
    LIMIT 10;

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.

Hướng dẫn mysql backtick vs single quote - biểu tượng backtick của mysql so với báo giá đơn

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 đề

// PDO example with named parameters, unquoted
$query = "INSERT INTO `table` (`id`, `col1`, `col2`, `date`) VALUES (:id, :col1, :col2, :date)";

// MySQLi example with ? parameters, unquoted
$query = "INSERT INTO `table` (`id`, `col1`, `col2`, `date`) VALUES (?, ?, ?, ?)";
0 và cột
// PDO example with named parameters, unquoted
$query = "INSERT INTO `table` (`id`, `col1`, `col2`, `date`) VALUES (:id, :col1, :col2, :date)";

// MySQLi example with ? parameters, unquoted
$query = "INSERT INTO `table` (`id`, `col1`, `col2`, `date`) VALUES (?, ?, ?, ?)";
1. Sử dụng backticks, chúng tôi đang biểu thị rằng đó là tên cột và bảng.

// Same thing with some variable replacements
// Here, a variable table name $table is backtick-quoted, and variables
// in the VALUES list are single-quoted 
$query = "INSERT INTO `$table` (`id`, `col1`, `col2`, `date`) VALUES (NULL, '$val1', '$val2', '$date')";
0

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

Hướng dẫn mysql backtick vs single quote - biểu tượng backtick của mysql so với báo giá đơn

Sự khác biệt giữa một trích dẫn và một backtick là gì?

Như bạn có thể đã hiểu bây giờ, không có sự khác biệt thực sự giữa việc sử dụng các trích dẫn đơn, trích dẫn kép hoặc backticks. Bạn có thể chọn một hoặc nhiều kiểu dựa trên sở thích của bạn. Tuy nhiên, luôn luôn tốt để bám vào một định dạng duy nhất trong suốt dự án để giữ cho nó gọn gàng và nhất quán.there is no real difference between using single quotes, double quotes, or backticks. You can choose one or multiple styles based on your preference. However, It is always good to stick to a single format throughout the project to keep it neat and consistent.

Bạn có nên sử dụng Backticks trong SQL không?

Backticks (`) được sử dụng để chỉ ra tên cơ sở dữ liệu, bảng và cột. Trừ khi bạn đang sử dụng các từ dành riêng hoặc xung đột cho tên bảng và cơ sở dữ liệu, bạn sẽ không cần sử dụng chúng. Trích dẫn ('hoặc ") được sử dụng để phân định chuỗi và phân biệt chúng với tên cột.Unless you're using reserved or conflicting words for table and database names, you'll not need to use them. Quotes ( ' or " ) are used to delimit strings, and differentiate them from column names.

Tại sao MySQL sử dụng 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 đề album và tiêu đề cột.Sử dụng backticks, chúng tôi đang biểu thị rằng đó là tên cột và bảng.to select columns and tables from your MySQL source. In the example below we are calling to the table titled Album and the column Title . Using backticks we are signifying that those are the column and table names.

MySQL có sử dụng báo giá đơn hay đôi không?

Báo giá kép cũng được MySQL hỗ trợ cho các giá trị chuỗi, nhưng các trích dẫn đơn được các RDBM khác chấp nhận rộng rãi hơn, do đó, đó là một thói quen tốt để sử dụng các trích dẫn đơn thay vì gấp đôi.single quotes are more widely accepted by other RDBMS, so it is a good habit to use single quotes instead of double.