Điều này nghe có vẻ như một huyền thoại đô thị đối với tôi.
bin2hex()
ánh xạ từng byte trong đầu vào thành hai byte trong đầu ra ('a'
-> '61'
), vì vậy bạn sẽ nhận thấy sự gia tăng bộ nhớ đáng kể của tập lệnh thực hiện truy vấn - tập lệnh sẽ sử dụng ít nhất nhiều bộ nhớ hơn độ dài byte của dữ liệu nhị phân sẽ được chèn vào.
Hơn nữa, điều này ngụ ý rằng đang chạy bin2hex()
trên một chuỗi dài mất nhiều lâu hơn so với việc chạy chuỗi mysql_real_escape string()
, mà - như được giải thích trong tài liệu của MySQL - chỉ thoát 6 ký tự:NULL
, \r
, \n
, \
, ,
và 'Control-Z'.
Đó là đối với phần PHP, bây giờ là đối với MySQL:Máy chủ cần thực hiện thao tác ngược lại để lưu trữ dữ liệu một cách chính xác. Việc đảo ngược một trong hai hàm mất nhiều thời gian như thao tác ban đầu - hàm ngược của mysql_real_escape_string()
cần thay thế các giá trị thoát (\\
) với những cái không thoát (\
), ngược lại của bin2hex()
sẽ cần phải thay thế từng và từng bộ byte với một byte mới.
Kể từ khi gọi mysql_real_escape_string()
trên dữ liệu nhị phân là an toàn (theo tài liệu của MySQL và PHP hoặc ngay cả khi chỉ xem xét rằng hoạt động không thực hiện bất kỳ chuyển đổi nào khác với những chuyển đổi được liệt kê ở trên), sẽ hoàn toàn không có ý nghĩa nếu thực hiện một hoạt động tốn kém như vậy.