2017-07-04 9 views
0

私のデータベースにはpostsという名前のテーブルがあります。その中で、列は以下のとおりです。Php:MySQLの単一フィールドの配列から値を取り出す方法

Postid - 1

PostBody - 私の最初のポスト

Likers - 1,2,3,4,5、

が今やろうとしていますものですそれ以外のフィールドでは、フィールド上のすべてのデータを取得せずに個々の数値を取得しようとしています。だから私が好きなNo.3を取り出そうとするなら、私はそれをエコーアウトするときに出力を3にします。

私はFIND_IN_SET()とstrstr()を試しました。私が得るのは、配列全体が1-5で、エコーされているだけです。そのため、一致する番号を持つ他の変数(つまり$ var = 3;)と一致させることはできません。

これを行う方法はありますか?

ありがとう

+0

このような方法で好き嫌いをしてはいけません。列 'post_id'と' liker_id'だけを持つ 'post_likers'テーブルを用意してください。この方法で、単純なSQLクエリを実行して、ユーザーが投稿を好きかどうかを調べることができます。 – theomessin

+0

あなたは 'FIND_IN_SET'でクエリを表示できますか? –

+0

投稿者FROM投稿WHERE FIND_IN_SET( '3'、liker) – user2938948

答えて

0

あなたは本当に(最初に私のコメントを読んで)、このようにそれをしたい場合は、何を行うことができますが、カンマ区切りのデータを取得するPHPの配列にそれを爆発して、構築されたarray_searchを使用しています機能:

$likers_attribute_data = '1,2,3,4,5,'; 
$likers_array = explode(',', $likers_attribute_data); 
// check if user 3 is a liker: 
if (array_search('3', $likers_array) { 
    // he has :) 
} else { 
    // he hasn't :(
} 

これはやはりビジネスが非常に乱雑で非効率的な方法です。私のコメントの解決策にちょうだいてください!

+0

OPにmysqlで解決策が必要PHP –

+0

@FrayneKonok彼はこれを指定していません。彼はまた、PHP関数である 'strstr'を使ってみたと言いました。慎重に質問を読んだら、どちらの解決策も彼に受け入れられると言えるでしょう。 – theomessin

+0

@themessinこのソリューションでは私のために動作しません。それは期待どおりに引っ張っていない – user2938948

関連する問題