1

年度末の賞を個人が受賞したかどうかを示すセクションを追加しようとしています. チャンピオンとリザーブ チャンピオンが問題なく表示されています。ただし、「年末賞」セクションを追加しようとすると、次のエラーが発生し続けます。

SQL 構文にエラーがあります。1行目の「show = yearendORDER BY year DESC」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください

アポストロフィをいじったり、LIKE ステートメントを使用したり、ORDER BY を削除したり、考えられることはすべて試しましたが、途方に暮れています。エラーの原因となる作業ステートメントから何が変更されたのかわかりません。

これはうまくいきます

<?php
$id = $_GET['id']; //Gets the ID from the URL
$result = mysql_query("SELECT * FROM competition 
WHERE id = $id 
AND place = 'CH' 
ORDER BY year DESC") or die(mysql_error());

while($row = mysql_fetch_array($result)){
echo $row['class'];
echo "<small>(";
echo $row['show'];
echo ")</small><br>";
}
?>


これは機能しません 以下で行った唯一の変更は place = is now show = です

<?php
$id = $_GET['id']; //Gets the ID from the URL
$result = mysql_query("SELECT * FROM competition 
WHERE id = $id 
AND show = 'yearend' 
ORDER BY year DESC") or die(mysql_error());

while($row = mysql_fetch_array($result)){
echo $row['class'];
echo "<br>"; 
} 
?>
4

1 に答える 1

2

SHOWはMySQLの予約語です。バックティックにするか、予約語を列名として使用せず、その列の名前を変更する必要があります。長期的には時間と髪の毛を節約できます。

変化する

AND show = 'yearend'

AND `show` = 'yearend'
    ^    ^
于 2013-10-02T03:22:01.917 に答える