2011-04-19 74 views
1

如何將LIKE應用於我的查詢。如何將LIKE %%應用於變量?

$query_event ="SELECT * FROM event_list WHERE even_title='$EventTitle' AND even_loc='$EventLocation' "; 

現在假設有形式要求要麼把標題或放位置的形式或u可以將兩個這樣會有怎樣查詢?

請幫

感謝

回答

1

您可以使用以下格式並且總是使用mysql_real_escape_string

$query_event ="SELECT * FROM event_list 
       WHERE even_title LIKE '%".mysql_real_escape_string($EventTitle)."%' 
       AND even_loc LIKE '%".mysql_real_escape_string($EventLocation)."%'"; 
+0

但是記住,這將需要轉義,以避免報價的問題(SQL注入攻擊等)。例如,如果$ EventLocation是「米克的酒吧」 - 現在你有不匹配的報價你SQL。 (啊哈 - 感謝您添加必要的逃生功能!) – 2011-04-19 13:15:20

+0

@Matt:它已經在第二次嘗試 – 2011-04-19 13:17:05

1

你想要的東西就像逃脫輸入:

$query_event ="SELECT * FROM event_list WHERE even_title LIKE ('%".$EventTitle."%') AND even_loc LIKE ('%".$EventLocation."%')"; 

確保經歷these tutorials有一個LIKE教程太

1

那麼首先,要防止注入您的SQL,但你可以這樣做:

$query_event = "SELECT * FROM event_list 
    WHERE even_title LIKE '%".mysql_real_escape_string($EventTitle)."%' 
    AND even_loc LIKE '%".mysql_real_escape_string($EventLocation)."%'"; 

但你實際上是使用類似PDO的更好:

$qry = 'SELECT * FROM event_list 
    WHERE even_title LIKE :title 
    AND even_loc LIKE :location'; 

$data = array('title' => '%'.$EventTitle.'%', 
       'location' => '%'.$EventLocation.'%'); 

$sth = $pdo->prepare($qry); 

$sth->execute($data); 
+0

東西不看這裏... – 2011-04-19 13:15:53

+0

@大衛什麼看起來不正確? – 2011-04-19 13:20:34

+0

錯位$,看起來像現在修復+1 – 2011-04-19 13:26:00

1

它看起來很簡單。 {}甚至沒有必要,但爲PHP添加可讀性而不影響SQL有效性。

$query_event ="SELECT * FROM event_list WHERE even_title LIKE '%{$EventTitle}%' AND even_loc LIKE '%{$EventLocation}%' ";