我必须使用一个动态字段和其他静态字段使用ON重复键指令执行多个插入/更新。我得到了包含字段的表“通知”:
ID (BIGINT AUTOINCREMENT PRIMARY KEY),
user (BIGINT UNIQUE),
creator (BIGINT UNIQUE),
type (TINYINT UNIQUE),
value (BIGINT UNIQUE),
date (INT),
readed (TINYINT),
erased (TINYINT). 我必须为每个用户插入/更新一行(ID将由查询提取),因此字段" user“的值将是动态的,其他值是静态的。如何在MySQL上只执行一个查询就可以执行此操作?
发布于 2015-01-19 12:36:41
如果可以使用PDO,那么一旦添加了所有记录,就可以构建查询并提交它。
下面是一个将beginTransaction与commit结合使用的示例。
这将准备查询,然后遍历用户列表并分配每个记录。
循环之后,它提交/操作查询。
$dbc->beginTransaction();
$sql = 'INSERT INTO notifications (id,user,creator,type,value,date,readed,erased) '
. 'VALUES (:id,:user,:creator,:type,:value,:date,:readed,:erased) '
. 'ON DUPLICATE KEY UPDATE user=:user ';
$sth= $dbc->prepare( $sql );
foreach( $userlist as $user )
{
$sth->execute( array(
':id'=>$user['id'],
':user'=>$user['user'],
':creator'=>$user['creator'],
':type'=>$user['type'],
':value'=>$user['value'],
':date'=>$user['date'],
':readed'=>$user['readed'],
':erased'=>$user['erased']
));
}
$dbc->commit();一些参考点:
https://stackoverflow.com/questions/28024375
复制相似问题