我正在寻找一种方法来实现一堆UPDATE操作,其中WHERE子句在表位于第一个UPDATE之前的状态下进行搜索。 我想我可以使用一些TRANSACTION选项,但我对文档不了解。
一个例子: 我已经在一个foreach循环中运行了此请求:
UPDATE sometable SET someField = '{$newId}' WHERE someField = '{$oldId}';
但是有时$ oldId等于先前的$ newId值,因此更新将更改为很多行。
编辑:一些精度:
以下是我的意思的具体示例:
// Let s say old Ids are the keys and new Ids are the values
$arrayIds = array(1 => 2, 2 => 4, 3 => 2)
foreach ($arrayIds as $oldId => $newId) {
$req = "UPDATE clients SET contact_id = '$newId' WHERE contact_id = '$oldId';
$db->query($req); // DB is a database manager object, no matter how it works, this line query the request to server.
}
在此示例中,第一次迭代将每个contact_id 1更改为2,第二次迭代将contact_id 2更改为4等。但是,当第二次UPDATE出现时,由第一次迭代修改的所有行也会更改。