2013-05-03 69 views
0

我想要從數據表中抓取數據行,其中一個單詞與我的列'story'中的文本內的某個單詞匹配。檢查與MySQL查詢的字符串匹配

表結構:

post_id | user_id | story 
---------------------------------- 
1  | 1  | Hello World What's up? 
2  | 4  | Hello guys! 
3  | 7  | Working on shareit.me! 

例如:

我想抓住所有含你好(我找不區分大小寫)字的帖子。

我該怎麼做?

這是我迄今所做的:

// this will be the keyword! so use the variable $filter_tag in the query! 
$filter_tag= $_GET['tag']; 

//query for getting the users' posts containing the select tag 
$query_posts= "SELECT * FROM posts WHERE user_id= '$user_id' ORDER BY post_id 
DESC"; 

$result_posts= mysqli_query($connect, $query_posts); 

謝謝!

+1

那是一個錯誤的評論。查詢是**不是**選擇包含標籤的用戶的所有帖子,而是選擇用戶的所有帖子。 – 2013-05-03 13:02:22

+0

你喜歡運營商嘗試嗎?一個基本的運營商應該爲你做這件事。記住朋友基本知識是地下室 – 2013-05-03 13:03:06

+0

我想你應該做一些關於如何做到這一點的搜索結果。以這種方式查詢是SQL最基本的功能之一。 – Chad 2013-05-03 13:04:30

回答

3
$query_posts= "SELECT * FROM posts WHERE user_id= '$user_id' AND story LIKE '%$filter_tag%' ORDER BY post_id 
    DESC"; 
0

這將是:

SELECT * FROM posts WHERE ... AND story LIKE '%hello%'. 

一般的 「%」 是一個通配符(如 '*')。所以你可以使用'hello%''%hello%'等等。

+0

另外請記住從「get」 – 2013-05-03 13:05:07

0

可以使用LIKE操作:

$query_posts = "SELECT * FROM posts WHERE user_id = $user_id AND story LIKE '%yourword%' ORDER BY post_id"; 

%字符就像通配符。 %表示匹配任意數量的字符,其中_(下劃線)僅匹配一個字符。

注:我從你的user_id列檢查刪除的單引號太 - 這,是一個整數,想不加引號的 - 他們是字符串。

0

不言而喻不要忘記逃避投入。

$query_posts= "SELECT * FROM posts WHERE user_id = '$user_id' AND story LIKE '%".mysql_real_escape_string($filter_tag)."%'"; 
1
SELECT * FROM posts WHERE ... AND LOWER(story) LIKE '%hello%' 

OR

SELECT * FROM posts WHERE ... 
AND story COLLATE latin1_general_ci_ai LIKE '%hello%' 
0

最好的解決方法是將使用MATCH()AGAINST()和FULLTEXT索引。