検索
ホームページデータベースmysql チュートリアルLIKE ステートメントで MySQL ワイルドカードを適切にエスケープするにはどうすればよいですか?

How to Properly Escape MySQL Wildcards in LIKE Statements?

MySQL ワイルド カードのエスケープ

プリペアド ステートメントがオプションではない環境では、SQL インジェクションを防ぐために、MySQL に送信する前にユーザー入力を徹底的にエスケープすることが重要です。この目的には PHP の mysql_real_escape_string 関数が一般的に使用されますが、MySQL ワイルドカード文字 '%' および '_' をエスケープするには不十分です。

これを補うために、addcslashes を追加で使用できます。ただし、ユーザーが観察したように、ワイルドカードを含む入力がデータベースに送信されて取得されると、表示される結果に矛盾が生じます。

The Escapeing Enigma

ユーザーは、「_」文字の前にバックスラッシュ (「_」) が付加され、「"」および「'」文字が付加されるという奇妙な動作に遭遇しました。 3 つすべて '' でエスケープされているにもかかわらず、そうではありませんでした。なぜこれらの文字は異なる方法で処理されるのでしょうか?

MySQL コンテキストを理解する

解決の鍵この難問は、MySQL における LIKE マッチングのコンテキストを理解する上で発生します。「_」と「%」は、一般的な MySQL の使用法ではワイルドカードとみなされず、エスケープする必要はありません。 mysql_real_escape_string は、この目的でのエスケープのニーズに対応します。

ただし、LIKE ステートメントで使用する文字列を準備する場合は、リテラルが正しく解釈されるように、別のエスケープ ルールが適用されます。エスケープが必要です。

二重エスケープジレンマ

LIKE マッチングのコンテキストでは、「_」と「%」は特殊文字になります。 MySQL は、LIKE エスケープ手順と文字列リテラル エスケープ手順の両方でエスケープ文字としてバックスラッシュ ('') を使用します。これは、リテラルのパーセント記号を LIKE と一致させるには二重バックスラッシュ エスケープが必要であるというユーザーの例で示されているように、混乱を招く可能性があります。

適切な LIKE エスケープ

移植性を避けるため問題がある場合、ANSI SQL では、LIKE ステートメントに指定されたエスケープ文字の使用が規定されています。 PHP でこれを実現する 1 つの方法は、次の関数を使用することです。

function like($s, $e) {
    return str_replace(array($e, '_', '%'), array($e.$e, $e.'_', $e.'%'), $s);
}

Prepared Statements での使用

セキュリティと移植性を高めるには、Prepared Statements を使用することをお勧めします。利用可能な場合はステートメント。これにより、適切なデータ処理を確保しながら、手動でエスケープする必要がなくなりました。

以上がLIKE ステートメントで MySQL ワイルドカードを適切にエスケープするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
MySQLでビューを使用することの限界は何ですか?MySQLでビューを使用することの限界は何ですか?May 14, 2025 am 12:10 AM

mysqlviewshavelimitations:1)supportallsqloperations、制限、dataManipulationswithjoinsorubqueries.2)それらは、特にパフォーマンス、特にパルフェクソルラージャターセット

MySQLデータベースのセキュリティ:ユーザーの追加と特権の付与MySQLデータベースのセキュリティ:ユーザーの追加と特権の付与May 14, 2025 am 12:09 AM

reperusermanmanagementInmysqliscialforenhancingsecurationsinginuring databaseaperation.1)usecreateusertoaddusers、指定connectionsourcewith@'localhost'or@'% '。

MySQLで使用できるトリガーの数にどのような要因がありますか?MySQLで使用できるトリガーの数にどのような要因がありますか?May 14, 2025 am 12:08 AM

mysqldoes notimposeahardlimitontriggers、しかしpracticalfactorsdeTerminetheireffectiveuse:1)serverconufigurationStriggermanagement; 2)complentiggersincreaseSystemload;

mysql:Blobを保管しても安全ですか?mysql:Blobを保管しても安全ですか?May 14, 2025 am 12:07 AM

はい、それはssafetostoreblobdatainmysql、butonsiderheSeCactors:1)Storagespace:blobscanconsumesificantspace.2)パフォーマンス:パフォーマンス:大規模なドゥエットブロブスメイズ階下3)backupandrecized recized recized recize

MySQL:PHP Webインターフェイスを介してユーザーを追加しますMySQL:PHP Webインターフェイスを介してユーザーを追加しますMay 14, 2025 am 12:04 AM

PHP Webインターフェイスを介してMySQLユーザーを追加すると、MySQLI拡張機能を使用できます。手順は次のとおりです。1。MySQLデータベースに接続し、MySQLI拡張機能を使用します。 2。ユーザーを作成し、CreateUserステートメントを使用し、パスワード()関数を使用してパスワードを暗号化します。 3. SQLインジェクションを防ぎ、MySQLI_REAL_ESCAPE_STRING()関数を使用してユーザー入力を処理します。 4.新しいユーザーに権限を割り当て、助成金ステートメントを使用します。

MySQL:BLOBおよびその他のNO-SQLストレージ、違いは何ですか?MySQL:BLOBおよびその他のNO-SQLストレージ、違いは何ですか?May 13, 2025 am 12:14 AM

mysql'sblobissuitable forstoringbinarydatawithinarationaldatabase、whileenosqloptionslikemongodb、redis、andcassandraofferferulesions forunstructureddata.blobissimplerbutcanslowdowdowd withwithdata

MySQLユーザーの追加:構文、オプション、セキュリティのベストプラクティスMySQLユーザーの追加:構文、オプション、セキュリティのベストプラクティスMay 13, 2025 am 12:12 AM

toaddauserinmysql、使用:createuser'username '@' host'identifidedby'password '; here'showtodoitsely:1)chosehostcarefilytoconを選択しますTrolaccess.2)setResourcelimitslikemax_queries_per_hour.3)usestrong、uniquasswords.4)endforcessl/tlsconnectionswith

MySQL:文字列データ型の一般的な間違いを回避する方法MySQL:文字列データ型の一般的な間違いを回避する方法May 13, 2025 am 12:09 AM

toavoidcommonMonmistakeswithStringDatatypesinmysql、undultingStringTypenuste、choosetherightType、andManageEncodingandCollat​​ionsEttingtingive.1)U​​secharforfixed-LengthStrings、Varcharforaible Length、AndText/Blobforlardata.2)setCurrectCherts

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。