0

予約システムのすべてのフライト予約からのデータを含むmysqlテーブルがあります。ユーザーがフライトを予約すると、その予約の詳細がユーザー名とともにそのテーブルに保存されます。

今、私はユーザーの以前のフライトのすべてがHTMLテーブルに表示されるページを作成しており、結果をそのユーザーからのフライトのみにフィルターするコードを除いてすべてが機能します。

これは私が使用しているコード(の一部)です。

$query_string = "SELECT name, seats, departure, destination, class, username, miles, timestamp FROM $tablename WHERE username IN ('$username')";

このusernameフィールドには、フライトのユーザー名を予約したユーザーが保存され、$username変数には現在ログインしているユーザーのユーザー名が含まれます。私がやろうとしているのは、$username一致するフィールドのみを表示することですusername(したがって、現在のユーザーの予約のみを表示します)。

上記のコードをなしWHERE username IN ('$username')で使用すると、すべてのデータが表示されますが、上記のコードを追加すると、一致するものがある場合は何も表示されません。

誰かが私のコードを修正するのを手伝ってくれるなら、私はそれを大いに感謝します。ありがとう!

4

1 に答える 1

0

IN間違って使用しています。IN文字列または値のコンマ区切りリストを比較します。これはリテラルにすることができます:

WHERE username IN ('user1', 'user2', 'user3')

または、サブクエリから取得できます。

WHERE username IN (SELECT username FROM users)

完全一致が必要な場合、WHERE句は次のようになります。

WHERE username = '$username'

それでも機能しない場合は、データベースに正しいクエリを送信していることを確認する必要があります。

echo $query_string;
于 2012-08-01T17:32:30.047 に答える