我需要将行插入到多个表中,并且我需要插入的行数不固定。 我正在使用mysqli_multi_query()在一个步骤中执行所有插入查询。
我需要成功执行所有查询,否则如果其中一个查询失败则会恢复原始表。
我该怎么做?
我的查询是
insert into `_survey_user_map` (`user`,`survey`) values('anu','1')
重复密钥更新survey
='1';
从_survey_db
删除user
='anu';
答案 0 :(得分:2)
使用交易。
MySQLi::begin_transaction();
// Make your SQL queries here...
if (NO ERROR OCCURRED) {
MySQLi::commit();
} else {
MySQLi::rollback();
}
答案 1 :(得分:0)
不是运行INSERT
每行一行的多个查询,而是组成一个插入所有行的INSERT
查询。如果至少有一行无法插入,它将失败并且不会插入任何内容。
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);