私はカーシェアリングベンチャーのためのWebアプリケーションとバックエンドDBを作成しています。現時点で予約されていない車の検索結果のみが表示されるようにしたい。私は以下の質問をタイプアップしましたが、それが正しいかどうかわかりません。私は予約と車という2つの関係を使用しています。システムタイムスタンプ付きネストされたSQLクエリ
Reservations(R_No, M_ID, VIN, A_Code, start_time, end_time)
Cars(VIN, make, model, year, P_address, r_fee)
これは有効なクエリですか?そうでない場合、それは何を有効にするでしょうか?
$sql = "SELECT make, model, year, P_address, r_fee, VIN
FROM `Cars`, `Reservations`
WHERE (
(make LIKE %'$search'%) or
(model LIKE %'$search'%) or
(year LIKE %'$search'%) or
(P_address LIKE %'$search'%) or
(r_fee LIKE %'$search'%) and
(Cars.VIN != Reservations.VIN)
AND (
SELECT start_time, end_time
FROM Reservations
WHERE end_time <= SYSDATETIME() <= start_time));"
特定の車が予約テーブルの何かに一致しない場合は、どうすれば予約可能でしょうか? –
'これは有効なクエリですか' ...試しても実行されないので、無効です。 –
まず、% '$ search'%の代わりに '%$ search%'となります。第二に、クエリはSQLインジェクションにsuseptableです。パラメータ化されたクエリを使用します。 –