对于两个表的循环

时间:2014-03-03 06:32:13

标签: php mysql sql

if(count($search)==0) {
   for($i=0;$i<count($about);$i++) {
        $bd->insert("search","page_title,page_description,page_url,image_id","'About','{$about[$i]['image_title']}','http://religiousbrands.in/demo/about.php?search=".$about[$i]['id']."','{$about[$i]['uniq_id']}'");
            }
            } else  {
            for($i=0;$i<count($about);$i++) {
                for($k=0,$j=0;$k<=$i,$j<count($search);$j++,$k++) {
                    if($search[$j]['image_id']==$about[$i]['uniq_id']) {
                         echo "update".$i.'and'.$k.'and'.$j;
                         echo"<br>";

                        $bd->update("search",
                                   "page_title='About',page_description='{$about[$i]['image_title']}',page_url='http://religiousbrands.in/demo/about.php?search=".$about[$i]['id']."' ","image_id='{$about[$i]['uniq_id']}' limit 1");
                    }

                }
            }
            }

$ search 是我从数据库中获取的数组。首先我检查搜索表是否为空。如果为空,则将值插入搜索表中。 $ about 也是我从数据库中获取的数组。如果$ search不为空那么我正在更新该值,但首先检查$ search [$ j] ['image_id'] === $ about [$ i] [uniq_id],这里是我的问题开始:

假设在我的表中有3个条目,即: uniq_id = 1 uniq_id = 2 uniq_id = 3 在我的表搜索中有2个条目,即: image_id = 1 image_id = 2 所以搜索表不是空的所以它将遵循第二个条件。所以我正在尝试表格约[1] ['uniq_id']应检查$ search [1] ['image_id']和$ search [2] ['image_id']等等$ search [$ i] [' image_id']如果表有任何值 但我的循环不能像我想的那样工作所以任何人都可以帮助我

1 个答案:

答案 0 :(得分:0)

您需要知道“搜索”表中哪些行需要添加(INSERT)以及哪些行需要更新。

也许首先尝试循环遍历“搜索”数组并找到您拥有的“image_id”值。

$image_ids = array();
foreach ($search as $item) {    
    $image_ids[] = $item['image_id'];
}

接下来,遍历“about”数组。使用“$ image_ids”数组中的ID来确定您是否需要UPDATEINSERT项目。

foreach ($about as $item) {
    if (in_array($item['image_id'], $image_ids)) {
        // Item already exists. Update it.

    } else {
        // Item doesn't exist. Add it.

    }
}

这比将循环放在循环中要快得多。