2

デバッグしようとしている画面にこのエラーが表示されます。

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

これに使用する私の関数は次のとおりです。

function recentMessages() {
    $tbl_name="messages";
    $username = $_SESSION['username'];
    $result = mysql_query("SELECT * FROM $tbl_name WHERE to = '$username' ") or die(mysql_error());
    while ($row = mysql_fetch_row($result))
      {
        return $row['date']." ".$row['time']." ".$row['from']." ".$row['subject']. "<br />";    
      }
}

基本的に、私がやろうとしているのは、データベースメッセージからすべてのデータ行を取得することです。その「宛先」はセッションのユーザー名であり、エコーアウトされます。私が間違っていることについてのアイデアはありますか?ありがとう

4

4 に答える 4

10

toは予約語です。目盛りで囲みます。

... WHERE `to` = '$username'

MySQL の予約語を参照してください。

予約語はできるだけ使用しないでください。

于 2012-10-23T21:29:03.870 に答える
1

to は予約語です。これを試して:

$result = mysql_query("SELECT * FROM $tbl_name WHERE `to` = '$username' ") 
                or die(mysql_error());

一般に、この種の問題を防ぐためだけに、to、 between、from ... などの小さな単語を避けるようにしてください。より良い解決策は、「receiver」や「message_to」などのフィールド名を付けることです。

于 2012-10-23T21:32:05.227 に答える
0

TO は MySQL の予約語です。バッククォートを使用して区切ります。

SELECT * FROM $tbl_name WHERE `to` = '$username'
于 2012-10-23T21:32:15.890 に答える
-1

to は予約語だと思います。を to [to] に変更してみてください。編集: 完全にはわかりませんでした。SQL Server に入れてみると、TO が予約語であることがわかりました。

于 2012-10-23T21:30:46.267 に答える