2017-03-27 1 views
1

データベースから特定の著者の投稿データを取得しようとしています。
私はpost_authorごとにデータをフェッチする必要があります。ポストが有する場合codeigniterのカンマ区切りレコードと単一値を比較してデータを取得する

2,4,5,9-
2,4,5- 2,4,10-

から
post_authorフィールドのようなデータを含みます複数の著者はカンマ区切り形式で保存されます。
post_author(セッションadmin_idに格納されている)とフィールドpost_authorを比較したいと思います。
私がpost_author 4を持っているとしたら、それはすべてのレコードで利用できるので、selectクエリはすべてのレコードを返すべきです。モデルで
私の選択クエリ -

$this->db->select('p.ID,p.post_date,p.post_title,p.post_url,u.user_login'); 
$this->db->from('sa_posts p,sa_users u'); 
$this->db->where('u.ID=p.post_author'); 
$this->db->where('p.post_author',$this->session->userdata('admin_id')); // Here is a problem to compare post_author. 
$query=$this->db->get(); 
return $query->result(); 

私を助けてください。
ありがとうございます。

+0

何かが私にははっきりしていないです - 私はFIND_IN_SET()を使用したかった私は、出力を得たいくつかの変更をaking? – alaric

+0

@alaric。うん、あなたは正しいです。それはpost_authorは1つ以上かもしれません。 – Deepak

+0

そのような方法でデータを保存すべきではないということをしばらくお待ちしています。現場に1人の投稿者しかいない場合、現在何が返されていますか? – alaric

答えて

1

こんにちは、あなたがデータにアクセスするには、次のクエリを使用することができます親愛なる -

$query = mysql_query("SELECT post_title FROM sa_posts where instr(post_author , $this->session->userdata('admin_id')) "); 
    while($row = mysql_fetch_assoc($query)){ 
     print_r($row); 
    } 
+0

@ pramodうまくいくかもしれませんが、コアphpではなくcodeigniterで欲しいです。 – Deepak

2

CodeIgniterの中で次のことを試してみてください。

代替:

$this->db->where(FIND_IN_SET("{$this->session->userdata('admin_id')}", 'p.post_author') != 0); 
0

:用

$this->db->where('p.post_author',$this->session->userdata('admin_id')); 

をm後カンマ区切り形式で複数の著者があなたのDBフィールドにそこに格納されている、

$where = "FIND_IN_SET('".$this->session->userdata('admin_id')."', p.post_author)"; 

$this->db->select('p.ID,p.post_date,p.post_title,p.post_url,u.user_login'); 
$this->db->from('sa_posts p,sa_users u'); 
$this->db->where('u.ID=p.post_author'); 
$this->db->where($where); 
$query=$this->db->get(); 
return $query->result(); 
関連する問題