1

我目前有以下内容update statement,但无论如何我可以让它保留当前值但插入和新值不在数据库中?

如果不是,那么实现这一目标的最佳方法是什么?

UPDATE INTO {refocus_candidate_category} SET canid=?, categoryid=? WHERE canid=? AND categoryid=?",array($emailCheck['id'], $id, $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 INTO {table} SET canid=?, categoryid=? WHERE canid=? AND categoryid=?",array($emailCheck['id'], $id, $emailCheck['id'], $id));
    }
        echo 'found update';
}

身份证打印

    $fields['Occupation'][$i] = 1678 
4

1 回答 1

2

从您的问题中我不清楚您的意思是什么,但是对于处理缺失或已经存在的值的插入/更新,有许多替代方法。

首先,如果您只想插入 mysql 并让它创建新行或替换现有行(现有行由主键匹配确定)使用 REPLACE INTO 而不是 INSERT INTO。REPLACE INTO 尝试插入,但如果主键已经存在,它将查询变为 DELETE,然后重试 INSERT。

如果你想插入一个新行,但如果你已经有了一个现有行,你可以使用 INSERT IGNORE INTO (如果你的数据类型或列信息错误,它也可能无法插入.. .) 或 INSERT INTO ... ON DUPLICATE KEY UPDATE,它允许您对如何处理已存在的项目的插入进行更细粒度的控制。

还有其他选择,但这些可能是最相关的。

于 2012-09-21T22:16:53.880 回答