To mi zní jako městská legenda.
bin2hex() mapuje každý bajt na vstupu na dva bajtů na výstupu ('a' -> '61' ), takže byste si měli všimnout výrazného nárůstu paměti skriptu provádějícího dotaz – měl by využívat alespoň o tolik paměti více, jako je délka bajtů vkládaných binárních dat.
Dále to znamená, že spuštění bin2hex() na dlouhém řetězci zabere hodně delší než spuštění mysql_real_escape string() , což – jak je vysvětleno v dokumentaci MySQL - pouze escapuje 6 znaků:NULL , \r , \n , \ , , a 'Control-Z'.
To bylo pro část PHP, nyní pro MySQL:Server musí provést opačnou operaci, aby data správně uložila. Vrácení jedné z funkcí trvá téměř stejně dlouho jako původní operace – zpětná funkce mysql_real_escape_string() potřebuje nahradit uniklé hodnoty (\\ ) s neescapovanými jedničkami (\ ), zatímco opak bin2hex() bude muset nahradit každý jeden byte n-tice s novým byte.
Od volání mysql_real_escape_string() na binárních datech jsou bezpečná (podle dokumentace MySQL a dokumentace PHP nebo i když vezmeme v úvahu, že operace neprovádí žádné jiné konverze než ty, které jsou uvedeny výše), nemělo by absolutně žádný smysl provádět tak nákladnou operaci.