質問

だから、これは私たち全員が知っておくべきことであり、私が最初に見たときに私の心で遊んだことです。

そんなこと知ってる 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接続の文字セットを考慮します。

http://php.net/mysql_escape_string

この関数は同一です mysql_real_escape_string() それ以外で mysql_real_escape_string() 接続ハンドラーを取り、現在の文字セットに従って文字列を脱出します。 mysql_escape_string() 接続引数を取得せず、現在のcharSet設定を尊重しません。

mysql_escape_string 5.3から廃止されませんが、4.3.0以降は廃止されます。したがって、上記/または4.3.0を使用している人なら誰でも使用する必要があります mysql_real_escape_string.

使用する場合 php < 4.3.0, 、あなたを作るより magic_quotes_gpc active php.iniから、更新することをお勧めしますが、あなたのコードがあなたが使用することを確認するよりも問題がある場合は、 magic_quotes_gpcaddslash ではなく機能 mysql_escape_string.

これで、これらの関数は両方とも廃止されます

PHP 4> = 4.3.0およびPHP 5. PDO_MySQL 拡大

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top