2012-09-21 86 views
1

我有以下if statement,对于一个insert工作正常,但我似乎无法得到它仅更新与项目表中未插入:PHP MYSQL配置更新语句

插入:

 for($i=0; $i<count($fields['Occupation']); $i++) { 
      $id = $fields['Occupation'][$i]; 

      CMS::insertQuery("INSERT INTO {table} SET canid=?, categoryid=?", array($emailCheck['id'], $id)); 
     } 
      echo 'found update'; 

我都试过,没有运气以下更新线。

CMS::updateQuery("UPDATE {refocus_candidate_category} SET canid=?, categoryid=? WHERE canid=? AND categoryid=?", array($emailCheck['id'], $id)); 

声明全文:

$catParams = array_merge(array($emailCheck['id']), $fields['Occupation']); 
$catPlaceholders = '?'.str_repeat(',?',count($fields['Occupation'])-1); 

$catCheck = CMS::selectQuery("SELECT * FROM {table} WHERE canid=? AND categoryid IN (".$catPlaceholders.")", $catParams); 

if($catCheck != FALSE) 
{ 
    for($i=0; $i<count($fields['Occupation']); $i++) { 
     $id = $fields['Occupation'][$i]; 

     CMS::updateQuery("UPDATE {table} SET canid=?, categoryid=? WHERE canid=? AND categoryid=?", array($emailCheck['id'], $id)); 
    } 
     echo 'found update'l 
}else{ 
    for($i=0; $i<count($fields['Occupation']); $i++) { 
     $id = $fields['Occupation'][$i]; 

     CMS::insertQuery("INSERT INTO {table} SET canid=?, categoryid=?", array($emailCheck['id'], $id)); 
    } 
    echo 'else insert'; 
} 
+0

后您尝试进行更新的代码,完整的一个 – rsz

+0

您的更新查询四个参数,但你只提供两个值..? – heretolearn

回答

1

我猜你需要像下面的代码:

CMS::updateQuery("UPDATE {refocus_candidate_category} SET canid=?, 
        categoryid=? WHERE canid=? AND categoryid=?", 
        array($emailCheck['id'], $id, $emailCheck['id'], $id) 
       ); 

基本上你需要在你的UPDATE声明尽可能多的数组元素?

+0

我已经更新了我的问题会发言全文 –

+0

见 –

+0

非常感谢更新的答案,但目前不会将任何新的选择选项 - 保持目前的插入项目,但更新任何新的选择项。我怎么能做到这一点 –

0

好像你两数组项短:

CMS::updateQuery("UPDATE {refocus_candidate_category} SET canid=?, categoryid=? WHERE canid=? AND categoryid=?", array(
    emailCheck['id'], $id, ,'canid', 'cat_id number here'); 
); 
+0

我已经更新了我的问题会发言全文 –