次のコードを検討してください:
$sql = "INSERT INTO airports (name) VALUES ('$name')";
ここで、$name
と仮定します。 "Chicago O'Hare"
です 。文字列補間を行うと、次のSQLコードが得られます:
INSERT INTO airports (name) VALUES ('Chicago O'Hare')
アポストロフィが原因で、これは形式が正しくありません。 SQL引用符として解釈されます 、およびクエリはエラーになります。
さらに悪いことが起こる可能性もあります。実際、SQLインジェクションは、MITREによって2011年の最も危険なソフトウェアエラーの第1位にランクされました。
ただし、とにかく文字列補間を使用してSQLクエリを作成することはできません。代わりに、パラメータを使用したクエリを使用してください。
$sql = 'INSERT INTO airports (name) VALUES ($1)';
$result = pg_query_params($db, $sql, array("Chicago O'Hare"));