1

フィードを解析していて、それをデータベースに挿入したいと考えています。正しいフィード エントリをエコー出力しますが、データベースに挿入しようとすると、次のエラーが発生します。

SQL 構文にエラーがあります。1 行目の「update, link) VALUES (...) の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

コードは次のとおりです。

include_once("connect_to_mysql.php");

$xml= simplexml_load_file('http://somefeed/feeds/rss');
$list = $xml->entry;
$title = $list[0]->title;
$img = $list[0]->summary->div->img['src'];
$update = $list[0]->updated;
$link = $list[0]->link['href'];

$sql = mysql_query("INSERT INTO table (title, img, update, link) 
VALUES ('$title', '$img', '$update', '$link')") or die (mysql_error());

これは私のウェブサイト全体でうまくいきましたが、今ではこのエラーが発生します。私はxampを使用しています。また、一部のエントリは http:// を含むファイルであり、問​​題はありますか? 同様の投稿を見つけましたが、それらの修正は機能しません。

4

1 に答える 1

6

これらは 2 つの予約済みキーワードです。クエリtableupdate使用する場合は、バッククォートでエスケープする必要があります。

INSERT INTO `table` (title, img, `update`, link) 
VALUES ('$title', '$img', '$update', '$link')

SQL Injection補足として、値が外部から取得された場合クエリは脆弱です。予防方法については、以下の記事をご覧ください。PreparedStatements を使用すると、値を一重引用符で囲む必要がなくなります。

于 2013-01-11T13:32:07.477 に答える