09/10/2018, 18:03

Làm sao insert kí tự '' vào CSDL bằng ASP???

Mình insert kí tự ' vào CSDL bằng ASP thì báo lỗi, vậy cách nào để insert nó, mình thấy Snitz Forum insert được mà???
1011 viết 20:09 ngày 09/10/2018
Bạn viết một hàm FormatStringInput:
Code:
Function FormatStringInput(str)
       str = Replace(str,"'", "''")
       FormatStringInput = str
End Function
Hàm này thay thế dấu nháy đơn ' trong chuỗi nhập bằng 2 dấu nháy đơn ''. Chỗ nào có TextBox nhập liệu bạn hãy dùng hàm này Format lại dữ liệu trước khi Insert hay Update vào Database.
ptran viết 20:15 ngày 09/10/2018
chỉ cần dòng này thôi , không nên làm một cái function cho một dòng lệnh đơn giản như vậy

str = Replace(str,"'", "''")
1011 viết 20:08 ngày 09/10/2018
Đúng vậy, nếu chỉ cần để Insert được dấu ' thì dùng hàm Replace là đủ. Tuy nhiên khi Insert vào Database không chỉ Format mỗi dâu nháy đơn ' không thôi. Cách viết của mình là để mở rộng cho việc Format chuỗi Insert.
Ví dụ: khi bạn muốn cấm Insert các thẻ HTML chẳng hạn, hay là bạn không cho Insert các dòng script, ...
quachhylam viết 20:10 ngày 09/10/2018
Nếu dụng hàm Replace thì chỉ insert kí tự '' chứ không phải ' (mình muốn ở đây là kí tự '). Có ai chỉ giúp với!!!
ptran viết 20:15 ngày 09/10/2018
quachhylam post câu lệnh sql dùng để insert lên đây cho các bạn xem sao
bpmtri viết 20:10 ngày 09/10/2018
Quách Hỷ Lâm xem kỹ lại câu lệnh nhé. Câu lệnh này thay một dấu nháy đơn ' thành 2 dấu nháy đơn '' chứ không phải thành dấu nháy kép!
Code:
str = Replace(str,"'", "''")
Hynohun viết 20:10 ngày 09/10/2018
muốn insert ký tự ' cũng không khó khăn gì , bạn tham khảo câu lênh SQL sau :
Code:
query = 'INSERT INTO user(name,email) VALUE ("' & fld_name & '", "' & fld_email & '")'
chú ý : lúc này bạn phải replace " bằng "

Xem kỹ câu lệnh sql bạn sẽ biết thôi.
quachhylam viết 20:14 ngày 09/10/2018
Mình sẽ ghi chi tiết hơn:
Nếu lệnh truy vấn là:
Dim fld_name, fld_email
fld_name = Request.From("name")
fld_email = Request.From("email")
query = "INSERT INTO user(name,email) VALUES (' " & fld_name & " ', ' " & fld_email & " '); "
Lúc người dùng nhập:
name: qua'ch hy? La^m
email: quachhylam@yahoo.com
Vậy thì câu lệnh khi đó sẽ là:
query = " INSERT INTO user(name,email) VALUES (' qua'ch hy? La^m ', ' quachhylam@yahoo.com ');"
-> Trình duyệt sẽ báo lỗi vì IIS cho rằng kí tự ' ngay tại qua'ch hy? La^m là dấu chú thích
Giải pháp là dùng hàm Replace để chuyển kí tự ' thành kí tự nào khác, và khi ta lấy dữ liệu từ DATABASE ta lại dùng hàm Replace để trả về chính tứ tự '.
Ở đây không phải là chèn ' mà chèn kí tự trung gian.

Mình hỏi là có giải pháp nào chèn chính xác kí tự ' không???
Hynohun viết 20:12 ngày 09/10/2018
Hyn đã chỉ rồi mà, bạn cứ dùng thử câu lệnh SQL của Hyn đi rồi hẵng thắc mắc.
Chỉ cần chú ý 1 tý sẽ biết thôi.
Bài liên quan
0