0

プロジェクトで検索機能を作成しようとしていますが、別の外部キーのテーブルから列レコードを選択する際の問題があり、イライラすることがわかりました。

これは、検索前の通常のサンプル出力です。 ここに画像の説明を入力

これは、検索後に発行された表です。 ここに画像の説明を入力

「member_booking」という名前のテーブルのmysqlクエリ ここに画像の説明を入力

イベント テーブルに基づいてタイトルを検索すると、外部キーによって制限されていないタイトル レコードの文字列が表示されます。

mysql クエリは次のようになります。

select *
from member_booking,event,member
where member_booking.E_ID=event.E_ID and member_booking.MEM_ID=member.MEM_ID and  member_booking.REF_CODES like '%$keyword%' OR event.E_TITLE like '%$keyword%' OR member.MEM_USERNAME like '%$keyword%' OR member.MEM_EMAIL like '%$keyword%' 

ありがとう。

4

1 に答える 1

1

これらの「like」演算子に $keyword を注入する場合は、SQL インジェクション攻撃に注意してください。テーブルを結合するには、「内部結合」または左/右結合を使用します。

例えば。

select 
-- your comma separated list of fields here, for example
-- e.event_title , e.amount , e.event_date , e.MEM_ID, 
from 
member_booking mb inner join event e on mb.E_ID = e.E_ID 
inner join member m on mb.MEM_ID = m.MEM_ID
where  mb.REF_CODES like '%$keyword%' 
OR e.E_TITLE like '%$keyword%' 
OR m.MEM_USERNAME like '%$keyword%' 
OR m.MEM_EMAIL like '%$keyword%' ** 
于 2013-09-06T17:16:43.713 に答える