0

私は codeigniter を使用しています。基本的には次のことを行います。

$val = $this->db->call_function('real_escape_string', $this->input->post('name'));

これは、データベースに入れる前にデータに対して行うすべてです。誰かが O'hara のような値を入力すると、データベースでは O\'hara のように表示されます

だから、私は出力にスラッシュを文字列化できると思いますが、これはデータベースにデータをエスケープして保存する通常の方法ですか?

解決済み Active Records はクエリをエスケープするため、「 real_escape_string 」関数でも二重エスケープを行います

したがって、real_escape_string をまったく使用する必要はないと思います。アクティブなレコードがこれを行います。

4

4 に答える 4

1

「\」はエスケープ文字と呼ばれ、その後の次の文字 (この場合は「)」が SQL ステートメントに干渉しないように使用する必要があります。ただし、CI を使用している場合は、CI がこれらすべてを処理してくれるはずです。出力されたテキストのスラッシュを書式設定または削除するために使用できると思われる「HTMLヘルパー」があります。それでも、CI で DB から値を出力すると、スラッシュは自動的に削除されます。

于 2012-07-07T00:08:24.947 に答える
0

SQL クエリの文字列をエスケープするのは、実際の値をデータベースに取得できるようにするためです。

SQL クエリの値は のように見えますがO\'hara、データベースで最終的に得られる値は ですO'hara

したがって、値を表示するときに何もする必要はありません。もちろん、表示する環境のためにエスケープすることを除いて。HTML ドキュメントで表示する場合は、HTML エンコードします。これはアポストロフィー ( ) を変更しませんが、や'などの他の文字を変更します。<>

于 2012-07-07T00:08:14.530 に答える
0

直接使う

$val = real_escape_string($this->input->post('name'));
于 2012-07-07T00:08:50.933 に答える
0

引用符と特殊文字をエスケープすることは、コードを正確に保存および抽出できるようにするのに役立つため、通常の方法であり、レコードの保存に期待されています。

于 2012-07-07T00:05:49.977 に答える