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'sThả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