他のリンクをすべて使用してテーブルを作成したいが、処理が遅すぎる、私はCodeIgniterでこれをやっている。それを行うより良い方法。CodeIgniterで挿入を最適化する方法(より速く挿入する)
これは私のコードです:
foreach($results as $value) {
$ci->db->select('id');
$ci->db->where('url', $value->Url);
$link = $ci->db->get('links')->row();
if(@!$link) {
$ci->db->insert('links', array(
'title' => $value->Title,
'url' => $value->Url,
'description' => $value->Description,
'is_featured' => 0,
'published_date' => date('Y-m-d h:i:s')
));
$link_id = $ci->db->insert_id();
} else {
$link_id = $link->id;
}
$ci->db->where('link_id', $link_id);
$ci->db->where('term_id', $term_id);
$term_links = $ci->db->get('term_links')->row();
if(!$term_links) {
$ci->db->insert('term_links', array(
'link_id'=>$link_id,
'term_id'=>$term_id,
'order_link'=>$order,
'duplicates'=>0
));
} else {
$ci->db->where('id', $term_links->id);
$ci->db->update('term_links', array('duplicates'=>$term_links->duplicates+=1));
}
$order++;
}
任意のアイデア?私はSQLの代わりにactiverecordsを使用します。
ありがとうございます!
ありがとうございました!私は関数を使う方法を見て、私は質問だけを持っています、この関数は挿入されたIDを返すことができますか?挿入した行を取得するためにinsert_id()関数を使用するためです。再度、感謝します! – Alan
私の理解はノーです。基本となるmysqlのlast_insert_id()はそれをサポートしていないからです。 http://dev.mysql.com/doc/refman/5.6/en/information-functions.html#function_last-insert-id – e4c5
バッチがあなたのために機能しない場合、代替案が何であるかを見てみましょう。正確に何をしようとしているのか、あなたのテーブルが何であるかをより明確にあなたの質問を更新してください。 – e4c5