0

PHP でこのステートメントを実行すると、次のエラーが発生します。

    $sql = mysql_real_escape_string("INSERT INTO `locations`(`id`,`anchor_url`,`anchor_title`) 
    VALUES (1,`http%3A%2F%2Fmaps.google.com%2Fmaps%2Fms%3Fmsid%3D210426849026628615459.0004bd6aaf4e431aab7f9%26msa%3D0%26output%3Dembed`, `Se "Mar Menor" på kartet`)");

引用符と関係があると思いますが、別の引用符を試してみたところ、SQL 構文 (一重引用符) にエラーがあるという別のエラーが表示されました。

上記のクエリを実行したときにスローされるエラーは次のとおりです。

「フィールド リスト」の不明な列「http%3A%2F%2Fmaps.google.com%2Fmaps%2Fms%3Fmsid%3D210426849026628615459.0004bd6aaf4e431aab7f9%26msa%3D0%26output%3Dembed」

編集:

回答は受け入れられましたが、提供された他の情報をテストしなかったため、その一部についてのみでした。準備されたステートメントの代わりに PDO を使用してデータベースにクエリを実行しました。

4

3 に答える 3

3

mysql_real_escape_stringクエリ全体を呼び出すことはできません。変数ごとに個別に呼び出す必要があります。

例:

// THIS IS AN EXAMPLE ONLY -- NOT A BEST PRACTICE!
$sql = "INSERT INTO `locations`(`id`,`anchor_url`,`anchor_title`) VALUES ".
       "(1, '".mysql_real_escape_string('http://...')."', ".
       "'".mysql_real_escape_string('whatever')."')";

mresまた、生成される値を一重引用符で囲んでいることに注意する必要があります。これらは絶対に重要です。

もちろん、上記は非常に見栄えが悪いので、少しきれいにすることができます。

// THIS IS AN EXAMPLE ONLY -- NOT A BEST PRACTICE!
$sql = sprintf("INSERT INTO `locations`(`id`,`anchor_url`,`anchor_title`) VALUES ".
               "(1, '%s', '%s')",
               mysql_real_escape_string('http://...'),
               mysql_real_escape_string('whatever'));

上記は、データベースへの入力をサニタイズするために必要な最小限の作業です。ただし、代わりに準備済みステートメントを使用した方がはるかに優れています ( mysqliまたはPDO拡張のいずれかを使用)。

于 2012-05-16T09:27:42.023 に答える
1
$sql = mysql_real_escape_string("INSERT INTO 
locations(id,anchor_url,anchor_title) VALUES (1,'http%3A%2F%2Fmaps.google.com%2Fmaps%2Fms%3Fmsid%3D210426849026628615459.0004bd6aaf4e431aab7f9%26msa%3D0%26output%3Dembed', 'Se "Mar Menor" på kartet')");
于 2012-05-16T09:29:05.937 に答える
0

文字列値にアポストロフィを入れると、` 文字が含まれます

INSERT INTO `locations`(`id`,`anchor_url`,`anchor_title`) 
VALUES (1,'http%3A%2F%2Fmaps.google.com%2Fmaps%2Fms%3Fmsid%3D210426849026628615459.0004bd6aaf4e431aab7f9%26msa%3D0%26output%3Dembed', 'Se "Mar Menor" på kartet')
于 2012-05-16T09:27:27.360 に答える