首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL上的多次插入/更新

问MySQL上的多次插入/更新
EN

Stack Overflow用户
提问于 2015-01-19 12:10:36
回答 1查看 245关注 0票数 1

我必须使用一个动态字段和其他静态字段使用ON重复键指令执行多个插入/更新。我得到了包含字段的表“通知”:

代码语言:javascript
复制
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上只执行一个查询就可以执行此操作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-19 12:36:41

如果可以使用PDO,那么一旦添加了所有记录,就可以构建查询并提交它。

下面是一个将beginTransaction与commit结合使用的示例。

这将准备查询,然后遍历用户列表并分配每个记录。

循环之后,它提交/操作查询。

代码语言:javascript
复制
$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();

一些参考点:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28024375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档