1

xml フィードを取り込むファイルに対して 5 分ごとに cronjob を実行しています。現時点では、そのフィードをデータベースに追加しているだけなので、以下になる可能性があります。

title, this is a new title
title, this is another title

しかし、私が抱えている問題は、cronが再び実行されたときです。

title, this is a new title
title, this is another title
title, this is a new title
title, this is another title

そしてそれが再び実行されるとき

title, this is a new title
title, this is another title
title, this is a new title
title, this is another title
title, this is a new title
title, this is another title

等々.....

データベースに同じタイトルのレコードがない場合にのみレコードを挿入したいので、cronジョブは実行を続け、別のタイトルに気付いたときにデータベースに挿入します。

私は not_like などの個別のオプションをたくさん試しました。

誰かがこれを行うための最良の方法を教えてもらえますか???

ありがとうございました ;)

私は次の方法でそれを行うことができましたが、間違いなく最善の方法ではありません

    function addResults($data){

   $this->db->select('title');
       $this->db->from('articles');
       $this->db->where('title = ' . "'" . $data['title'] . "'");
       //$this->db->limit(1);
       $query=$this->db->get();
       echo $query->num_rows();
       if($query->num_rows()){

   }else{
        echo 'New Record ' . $data['title'];
        $this->db->set('date', 'NOW()', FALSE); 
            $this->db->insert('articles', $data);
        }

    }
4

1 に答える 1

2

私はパーティーに少し遅れていることを知っていますが、これが少し良い方法です:

function addResults($data)
{
    $result = $this->db->get_where('articles', array('title ' => $data['title']));
    $inDatabase = (bool)$result->num_rows();

    if (!$inDatabase)
    {
        echo 'New Record ' . $data['title'];
        $this->db->set('date', 'NOW()', FALSE); 
        $this->db->insert('articles', $data);
    }
}
于 2012-11-10T18:57:19.077 に答える