アポストロフィを含むデータ挿入時の MySQL 構文エラー
INSERT クエリを使用して MySQL データベースにデータを挿入しようとすると、次のエラーが発生する場合があります。データにアポストロフィ (一重引用符) が含まれている場合はエラーになります。このエラーは通常、引用符で囲まれたデータに関連する構文の問題として現れます。
エラー メッセージ:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's','Corn Flakes 170g','$ 15.90','$ 15.90','$ 14.10','--')' at line 1MySQL Update Error:
説明:
MySQL では、アポストロフィは文字列値の区切り文字として使用されます。文字列内にアポストロフィが出現する場合は、区切り文字と区別するためにバックスラッシュ () を使用してエスケープする必要があります。これにより、MySQL パーサーはアポストロフィが区切り文字ではなく文字列の一部であることを確実に認識します。
解決策:
この問題を解決するには、アポストロフィをエスケープします。各アポストロフィの前にバックスラッシュ文字を追加して挿入しようとしているデータ。たとえば、文字列「Kellog's」を挿入する代わりに、「Kellogg's」を挿入します。アポストロフィをエスケープすることで、区切り文字ではなく文字列値の一部として扱うように MySQL に指示します。
追加の解決策 (mysql_real_escape_string を使用):
PHP を使用して MySQL に接続している場合は、mysql_real_escape_string() 関数を使用して、データをデータベースに挿入する前に、データ内のアポストロフィを含む特殊文字を自動的にエスケープできます。この機能により、データが挿入用に適切にフォーマットされていることを確認し、SQL インジェクション攻撃を防止します。 mysql_real_escape_string() を使用した関数の例を次に示します:
<code class="php">function insert($database, $table, $data_array) { // ... (Rest of the code omitted for brevity) // Escape apostrophes in data values foreach ($data_array as $key => $value) { $tmp_dat[] = "'".mysql_real_escape_string($value)."'"; } // ... (Rest of the code omitted for brevity) }</code>
以上が挿入されたデータ内のアポストロフィによって引き起こされる MySQL 構文エラーを克服するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。