だから、これは私たち全員が知っておくべきことであり、私が最初に見たときに心で遊んだものです。
mysql_escape_string
は5.3から非推奨になりましたが、mysql_real_escape_string
の実際の違いは何ですか。
私が思ったのは、mysql_real_escape_string
はmysql_escape_string
とまったく同じであり、mysql_real_escape_string
はmysqlリソースの2番目の引数を取ることです。
そのため、2つの関数は必要ないので、文字列の処理方法に多少の違いがあるはずだと思いました。
それで、違いはロケールと文字エンコーディングだけにかかっていると思いました。 ?
誰も私のためにこれをクリアできますか?
違いは、mysql_escape_string
は文字列を生のバイトとして扱い、適切だと思われる場所にエスケープを追加することです。
一方、mysql_real_escape_string
は、MySQL接続に使用される文字セットに関する情報を使用します。これは、マルチバイト文字を適切に処理しながら文字列がエスケープされることを意味します。つまり、文字の途中にエスケープ文字を挿入しません。これがmysql_real_escape_string
の接続が必要な理由です。文字列がどのように扱われるべきかを知るために必要です。
ただし、エスケープする代わりに、MySQLiライブラリのパラメーター化されたクエリを使用することをお勧めします。以前にエスケープルーチンにバグがあり、いくつかは再び現れる可能性があります。クエリをパラメータ化することは非常に難しく、混乱させるのがはるかに難しいので、MySQLのバグによって危険にさらされる可能性は低くなります。
_mysql_escape_string
_は5.3から非推奨ではありませんが、4.3.0以降では非推奨です。したがって、PHP上記のバージョンまたは4.3.0を使用する場合は、_mysql_real_escape_string
_を使用する必要があります。
_php < 4.3.0
_を使用する場合、php.iniから_magic_quotes_gpc active
_を作成するよりも、更新することをお勧めしますが、使用することを確認するよりコードに問題がある場合は、_magic_quotes_gpc
_およびaddslash
_mysql_escape_string
_ではなく関数。
ええと…そうですね。 MySQL接続の文字セットが考慮されます。
http://php.net/mysql_escape_string
この関数は
mysql_real_escape_string()
と同じですが、mysql_real_escape_string()
が接続ハンドラーを取り、現在の文字セットに従って文字列をエスケープする点が異なります。mysql_escape_string()
は接続引数を取らず、現在の文字セット設定を尊重しません。
現在、これらの関数は両方とも非推奨です
PHP 4> = 4.3.0およびPHP 5.彼らは
PDO_MySQL
拡張子