0

データ テーブルからすべての行のデータを取得しようとしています。ここで、1 つの単語が「ストーリー」列のテキスト内の単語と一致します。

テーブル構造:

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

例えば:

hello という単語を含むすべての投稿を取得したいと考えています (大文字と小文字を区別しないものを探しています)。

これどうやってするの?

これが私がこれまでに行ったことです:

// 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); 

ありがとう!

4

7 に答える 7

0

LIKE次の演算子を使用できます。

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

%文字はワイルドカードのようなものです。%は任意の数の文字に一致することを意味し、_(アンダースコア) は 1 つだけに一致します。

注:列チェックからも一重引用符を削除しましたuser_id-これは整数であるため、引用符で囲みたくありません-それらは文字列用です。

于 2013-05-03T13:06:32.580 に答える
0

言うまでもなく、入力をエスケープすることを忘れないでください。

$query_posts= "SELECT * FROM posts WHERE user_id = '$user_id' AND story LIKE '%".mysql_real_escape_string($filter_tag)."%'";
于 2013-05-03T13:07:17.430 に答える
0

最善の解決策は、FULLTEXT インデックスで MATCH() AGAINST() を使用することです。

于 2015-07-26T08:59:54.557 に答える
0

私の答えは同じです、私はsqlfiddleを作りました:

#supose the tag is Hello

SELECT * FROM posts
where story like "%Hello%";

PS: http://sqlfiddle.com/#!2/6bfcc1/5

于 2013-05-03T13:12:49.390 に答える