私は主にPhp 5.4+ および MySql 5.5+ バージョンで作業しています。私はすべてのプロジェクトでCodeigniterを使用しています。
私が直面している問題は
ときどき (一部の運用サーバーでは) POST 変数に ' または " 引用符が含まれていると、データベース エラーが発生します。
PHPとCIには、これらの文字列をaddslashesやmysql_escape_sequenceなどで処理するための優れた機能がありますが
ユーザーによって投稿されている可能性のあるすべての変数について、これらの条件を確認するのはそれほど簡単ではありません
毎回、addslashes を使用する必要があります。例: It\'s であり、出力を提供しているときに、出力 It's にストリップスラッシュを再度適用する必要があります。しかし、大きな値を扱うのは難しいです。
データベースはデータをそのまま保存するため、これらの文字列を検索するのは困難です。
何日も苦労して、utf8mb4_general_ciを使用する方がutf8よりも有利であることがわかりました
したがって、CIのDatabase.phpに次のものがあることを確認しました
$db['default']['char_set'] = 'utf8mb4';
$db['default']['dbcollat'] = 'utf8mb4_unicode_ci';
また、それぞれの列のデータ型を「LONGTEXT」に変更し、その照合を「utf8mb4_general_ci」に変更しました
驚いたことに、それらはいくつかのサーバーで機能しました。
しかし、まだ一部のサーバーで同じ問題が見つかりました。サーバー構成がそれらの稼働中のサーバーと一致していることを確認したにもかかわらず、これは少しイライラします。
すべての php および mysql 開発者は、このシナリオでどのように作業していますか? どのような予防策を講じていますか?
提案してください!!