挿入されたデータ内のアポストロフィによって引き起こされる MySQL 構文エラーを克服するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-24 02:47:29
オリジナル
920 人が閲覧しました

How to Overcome MySQL Syntax Errors Caused by Apostrophes in Inserted Data?

アポストロフィを含むデータ挿入時の 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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!