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

すべての入力をエスケープすると、文字列にスラッシュ(\)が残り、データベースに挿入されることがあります。なぜそれが起こるのですか、そしてどうすればこれを解決できますか?

    あなたは正しいです。
    魔法の引用符はSQLのものとは関係がなく、それに接続するべきではありません。
    魔法の引用符はサイト全体の問題であり、SQLのエスケープはSQLのみに関連する問題であるためです。

    したがって、それらは異なる治療を必要とし、決して併用されるべきではありません。

    SQLだけでなく、サイトのすべてのデータ操作を台無しにするため、無条件に魔法の引用符を取り除く必要があります。

    したがって、スクリプトのすべての呼び出しで実行されるブートストラップファイルにいくつかのストリップスラッシュコードを配置するのが賢明です。このようなコードの多数の実装で見つけることができるコードは、「stripslashes_deep」関数をグーグルで検索するだけです。

    互換性のために、魔法の引用符の実際の状態に関係なく、このコードを常に実行することをお勧めします(もちろん、get_magic_quotes_gpc()をチェックする条件の下で)。

    ただし、これらをオフにする別の可能性があります。アプリケーションのルートにphp.iniファイルを作成してみてください。

    ただし、コードには重大な間違いがあります。実際、それは何も保護しません。
    あなたは$memberidをエスケープしています および$postid ただし、引用しないでください! 。したがって、保護はまったくありません。エスケープが機能するのは、引用と一緒に使用した場合のみです。

    覚えておいてください:

    エスケープはセキュリティの同義語ではありません!

    一人で逃げることは何の助けにもなりません。従うべき一連のルールがあります。

    私は最近まともな説明を書いたので、繰り返しません:mysql_*関数をPDOおよびプリペアドステートメントに置き換える



    1. Oracle.DataAccessが機能するのにOracle.ManagedDataAccessが機能しないのはなぜですか。

    2. codeigniterクエリで列の合計を取得する方法

    3. MariaDBJSON関数

    4. 多対多の関連付けの結合テーブルにオプションはありますか?