sql >> データベース >  >> RDS >> Mysql

PHPからMySQLにバイナリデータを挿入するときにbin2hexを使用するのはなぜですか?

    これは私には都市伝説のように聞こえます。

    bin2hex() 入力の各バイトを2にマップします 出力のバイト('a' -> '61' )、したがって、クエリを実行するスクリプトのメモリが大幅に増加することに気付くはずです。少なくとも、挿入するバイナリデータのバイト長と同じ量のメモリを使用する必要があります。

    さらに、これは bin2hex()を実行することを意味します 長い文字列では多くかかります mysql_real_escape string()を実行するよりも長い 、これ-MySQLのドキュメントで説明されているように -6文字をエスケープするだけです: NULL \ r \ n \ および「Control-Z」。

    これはPHPの部分でしたが、MySQLの場合です。サーバーはデータを正しく保存するために逆の操作を行う必要があります。いずれかの関数を逆にするには、元の操作とほぼ同じ時間がかかります。 mysql_real_escape_string()の逆関数です。 エスケープされた値を置き換える必要があります( \\ )エスケープされていないもの( \ )、 bin2hex()の逆 すべてのバイトタプルを置き換える必要があります 新しいバイトで。

    mysql_real_escape_string()を呼び出してから バイナリデータは安全です(MySQLおよびPHPのドキュメントによると または、操作が上記以外の変換を行わないことを考慮した場合でも、このようなコストのかかる操作を実行することはまったく意味がありません。



    1. 任意のテーブルでIDをインクリメントする際に一連の文字列を追加するにはどうすればよいですか?

    2. DelphiでのBDEとADO

    3. SQLServer2005のデータをExcelに転送またはエクスポートするにはどうすればよいですか

    4. これらの2つの機能は、消毒には行き過ぎですか?