Cách chèn dấu nháy đơn trong MySQL bằng PHP

Cùng một chủ đề, tôi có một tùy chọn để nhập giá trị hợp đồng, tại thời điểm tôi hỏi liệu họ có thể chỉ cần nhập một hàng số vào [12500] hay không, nhưng bây giờ họ muốn có thể nhập dấu phẩy và dấu chấm. . 50], vì vậy để cho phép điều này, điều sau đây có ý nghĩa


$cValue=str_replace["'"/","/".", "'"/","/".", $_POST['contractValue']];

Tôi đã thử nó và nó không hoạt động, vì vậy tôi cho rằng đó là do cách tôi đã cố gắng làm nổi bật những gì cần thay đổi hoặc đó là một vấn đề toán học

Bạn cần thoát khỏi một trích dẫn trong SQL – tôi. e. bao gồm một tên với một dấu nháy đơn [e. g. Lay's] trong một chuỗi

Ví dụ

Bạn đang cố gắng chèn một số dữ liệu văn bản vào bảng của mình trong SQL, như vậy

INSERT INTO customer [id, customer_name]
VALUES [501, 'Chipita'];

Khi bạn đang cố gắng chèn một chuỗi văn bản [tên khách hàng], bạn phải chỉ ra phần đầu và phần cuối của tên bằng dấu nháy đơn

Tuy nhiên, khách hàng tiếp theo của bạn, Lay's, có một tên đã chứa một trích dẫn đơn ['] và bạn muốn giữ nó như một phần của chuỗi của mình

Dung dịch

Thoát khỏi trích dẫn đơn. Đây là những gì bạn muốn viết

INSERT INTO customer [id, customer_name]
VALUES [502, 'Lay''s'];

Đây là bảng khách hàng sau khi bạn chạy lệnh

idcustomer_name501Chipita502Lay's

Thảo luận

Trong ví dụ trên, bạn muốn chèn một tên có dấu nháy đơn [Lay's] vào cơ sở dữ liệu SQL. Để làm điều đó, bạn chỉ cần sử dụng hai dấu ngoặc kép trong tên thay vì một ['Lay''s']

Phương pháp này hoạt động với các hệ thống cơ sở dữ liệu Oracle, SQL Server, MySQL và PostgreSQL. Họ cũng hỗ trợ các cách khác để giải quyết vấn đề

  • MySQL và PostgreSQL đặt dấu gạch chéo ngược trước câu trích dẫn, như vậy.
    INSERT INTO customer [id, customer_name]
    VALUES [502, 'Lay\'s'];
    
  • Oracle sử dụng “trích dẫn theo nghĩa đen” – đặt chữ cái “q” ở phía trước, theo sau là dấu ngoặc đơn kèm theo dấu ngoặc vuông.
    INSERT INTO customer [id, customer_name]
    VALUES [502, q'[Lay's]'];
    

Bạn sử dụng phương pháp tương tự để thoát dấu nháy đơn trong câu lệnh SELECT. Ví dụ: để chọn Lay's, bạn có thể chạy truy vấn sau

Tuần trước, tôi đã viết một tập lệnh php trong đó nó là một biểu mẫu và sau khi biểu mẫu được gửi, nó sẽ nhập thông tin vào cơ sở dữ liệu mysql của tôi, nhưng vì lý do nào đó, bất cứ khi nào dữ liệu thông tin chứa ký tự dấu nháy đơn [ký tự dấu nháy đơn là ký tự . Đó là phím dấu nháy đơn? . ' ]

Ghi chú. điều này giả định rằng bạn đã quen thuộc với php, mysql và html

đây là một ví dụ về dữ liệu được nhập vào cơ sở dữ liệu khi người dùng gửi biểu mẫu có thông tin

Đây là một ví dụ về dấu nháy đơn không được chèn vào cơ sở dữ liệu của tôi khi thông tin của người dùng được nhập

một điều tôi học được là nếu thông tin được nhập với ký tự phản ứng dữ dội phía trước dấu nháy đơn thì nó sẽ hoạt động, vì vậy thông tin đầu vào của tôi sẽ như thế nào, nó sẽ hoạt động

Đây là một ví dụ về dấu nháy đơn không được chèn vào cơ sở dữ liệu của tôi khi thông tin của người dùng được nhập

Lưu ý về cơ bản tôi thay đổi người dùng thành người dùng

Nếu tôi cố gắng nhập dữ liệu này vào cơ sở dữ liệu của mình bằng biểu mẫu của mình, nó sẽ không hoạt động. Cuối cùng, tôi đã tìm ra lý do tại sao nó không hoạt động. Tôi đã tìm ra một hàm PHP để cho phép các ký tự đặc biệt này vào cơ sở dữ liệu bằng cách sử dụng các lệnh INSERT hoặc UPDATE

Nhưng tôi biết tôi không thể để khách truy cập của mình phải nhập ký tự \ mỗi khi họ sử dụng ký tự dấu nháy đơn

Tôi đã tìm thấy một hàm php thực hiện thủ thuật này, nó được gọi là. mysql_real_escape_string[]

Vì vậy, để hiểu hàm mysql_real_escape_string[], tôi sẽ chỉ cho bạn cách nó hoạt động trong một ví dụ thực tế

Giả sử tôi có một biểu mẫu, nơi tôi hỏi tên người dùng, sau khi người dùng gửi biểu mẫu, tên của anh ta sẽ được nhập vào cơ sở dữ liệu

tên của biến đầu vào sẽ được gọi là "user_name" vì vậy mã HTML sẽ giống như thế này








Trong trường hợp này, giá trị của user_name bằng. hình nền của

bây giờ khi PHP xử lý biến user_name và chèn vào dữ liệu, tôi sẽ sử dụng hàm mysql_real_escape_string[] để làm cho nó hoạt động và đây là cách tôi sẽ khai báo nó trong tập lệnh php

$user_name = mysql_real_escape_string [$_POST['user_name']];
?>

Bây giờ biến $user_name đã được khai báo với các chuỗi thực, tôi có thể chèn nó vào cơ sở dữ liệu và mysql sẽ lấy nó mà không gặp vấn đề gì

$sql = "CHÈN VÀO người dùng ĐẶT tên người dùng = '". $user_name. "' ";
?>

CẬP NHẬT. Phiên bản mới. Nếu mysql_real_escape_string[] không hoạt động, hãy thử mysqli_real_escape_string[]

PHP đã cập nhật chức năng này, bây giờ nó được gọi là mysqli_real_escape_string[]

LỜI KHUYÊN. bạn cũng có thể thử chức năng addlashes[]. nhưng nếu bạn đang nhập dữ liệu vào cơ sở dữ liệu MySQL của mình, bạn nên sử dụng mysqli_real_escape_string[] để thay thế

tại sao tất cả điều này xảy ra? . nếu máy chủ của bạn đã bật dấu ngoặc kép ma thuật, nó sẽ tự động thêm dấu gạch chéo vào dữ liệu của bạn để tập lệnh của bạn không bị lỗi. nhưng nếu bạn không bật trích dẫn ma thuật, bạn sẽ phải sử dụng mysqli_real_escape_string[]. vì vậy nếu Magic_quotes_sybase được bật trong php của bạn. ini, không có dấu gạch chéo ngược nào bị loại bỏ mà thay vào đó là hai dấu nháy đơn

mysql_real_escape_string = Thoát các ký tự đặc biệt trong chuỗi để sử dụng trong câu lệnh SQL

Mô tả
chuỗi mysql_real_escape_string [ string unescaped_string [, resource link_identifier] ]

nếu bạn muốn được trợ giúp thêm về chức năng này, bạn có thể truy cập trang web chính thức của PHP tại để biết thông tin thực sự hữu ích.
http. //www. php. net/thủ công/vi/chức năng. mysql-real-escape-chuỗi. php
http. //www. php. net/thủ công/vi/chức năng. thêm dấu gạch chéo. php

Cảm ơn và tôi hy vọng nó có ích, tôi đã cố gắng tìm mọi nơi nhưng không ai cung cấp thông tin cho tôi vì tôi không biết giải thích như thế nào

Làm cách nào để chèn dấu nháy đơn trong PHP?

Vì chuỗi trích dẫn kép không kết thúc bằng một trích dẫn đơn nên bạn thêm dấu nháy đơn trực tiếp vào chuỗi trích dẫn kép . Chuỗi trích dẫn kép sẽ xuất ra \' với dấu gạch chéo ngược đơn hoặc kép được sử dụng với dấu nháy đơn. Để xuất chuỗi \", bạn phải sử dụng ba dấu gạch chéo ngược.

Làm cách nào để chèn dấu nháy đơn trong MySQL?

Trong ví dụ trên, bạn muốn chèn một tên có dấu nháy đơn [Lay's] vào cơ sở dữ liệu SQL. Để làm điều đó, bạn chỉ cần sử dụng hai dấu ngoặc kép trong tên thay vì một [ 'Lay''s' ].

Làm cách nào để chèn chuỗi có trích dẫn đơn trong PHP?

Trích dẫn đơn ¶ . Để chỉ định một trích dẫn đơn theo nghĩa đen, hãy thoát nó bằng dấu gạch chéo ngược [ \ ]. enclose it in single quotes [the character ' ]. To specify a literal single quote, escape it with a backslash [ \ ].

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 .

Chủ Đề