Dla mnie brzmi to jak miejska legenda.
bin2hex() mapuje każdy bajt w danych wejściowych na dwa bajty na wyjściu ('a' -> '61' ), więc powinieneś zauważyć znaczny wzrost pamięci skryptu wykonującego zapytanie - powinien on używać co najmniej tyle pamięci, ile wynosi długość wstawionych danych binarnych.
Co więcej, oznacza to, że uruchomienie bin2hex() na długim łańcuchu zajmuje dużo dłużej niż uruchomienie mysql_real_escape string() , co - jak wyjaśniono w dokumentacji MySQL - po prostu ucieka 6 znaków:NULL , \r , \n , \ , , i 'Control-Z'.
To było dla części PHP, teraz dla MySQL:serwer musi wykonać odwrotną operację, aby poprawnie przechowywać dane. Odwrócenie jednej z funkcji zajmuje prawie tyle samo czasu, co pierwotna operacja — odwrócenie funkcji mysql_real_escape_string() musi zastąpić wartości ze znakami ucieczki (\\ ) z nieuniknionymi (\ ), podczas gdy odwrotność bin2hex() musiałby zastąpić każdą krotkę bajtową z nowym bajtem.
Od wywołania mysql_real_escape_string() na danych binarnych jest bezpieczny (zgodnie z MySQL i dokumentacją PHP lub nawet biorąc pod uwagę, że operacja nie wykonuje żadnych innych konwersji niż te wymienione powyżej), nie ma sensu wykonywać tak kosztownej operacji.