ホームページ  >  記事  >  バックエンド開発  >  php+mysqlでエスケープせずにコンテンツを保存する方法

php+mysqlでエスケープせずにコンテンツを保存する方法

WBOY
WBOYオリジナル
2016-06-23 14:39:491206ブラウズ

この投稿は ycyuyuan によって最終編集されました: 2013-12-10 20:48:07

SQL を使用せずに、php+mysql を使用してデータベースにレコードを保存または更新する方法はあるのでしょうか。 、コンテンツに特殊文字が含まれていると考えてください。または、SQL インジェクションをエスケープして保存する必要があります。エスケープせずにそのまま保存する方法はありますか (SQL インジェクションの脆弱性はありません)

一般的に保存する必要があるもの。
たとえば、ランダムに生成された長いキーを保存したい場合
コード スニペットを保存
php ファイルをデータベースに保存
作成した技術記事を保存
ニュースを保存...

ディスカッション (解決策)

Mysql はエスケープを保存し、アンチエスケープの読み取りは自動的に行われます。
mysql_real_escape_string();

一重引用符で囲まれた文字列内の単一引用符はあいまいさを引き起こすため、エスケープ文字「'」が必要です
他のコンテンツを処理する必要があるかどうかについては、完全に処理されますビジネス ニーズに応じて異なります

一重引用符、二重引用符、バックスラッシュ、および null はエスケープする必要があります。エスケープしないとSQL実行時にあいまいさが発生する可能性があります。

保存するときはアッドスラッシュを使用してエスケープし、コンテンツを取り出すときはストリップスラッシュを使用して逆エスケープします。

良い質問ですね。エスケープに関する混乱を解決しました

初心者の頃は mysql_real_escape_string の読み取りとアンチエスケープが自動的に行われることを知らなかったので、テスト後にようやく知りました。

ローカルでテストしましたが、顧客の仮想ホスト空間では動作しないとは知りませんでした。読み取り時に自動的にエスケープされません。

宇宙テスト送信内容:

更新後の読み取り表示は次のようになります:


ローカルテスト送信済みcontent:
更新後、読み取り表示は次のようになります:

ini 設定が違う

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。