我正在尝试让事务执行。我可以得到一个正常的查询来执行但不是一个事务。
这些是我的疑问:
$queries[] = "START TRANSACTION";
$queries[] = "INSERT INTO `customer_register` ( `c_email`,`web_customer_id`,`c_realname`,`c_password` ) VALUES ( 'support@mail.com','1','Name','test' )";
$queries[] = "COMMIT";
提交交易的方法:
private function commit_transaction($queries) {
foreach($queries as $query) {
if($this -> db -> blank_query($query)) {
continue;
} else {
$this -> db -> blank_query("ROLLBACK");
return false;
}
}
return true;
}
执行查询的方法:
public function blank_query($query) {
$result = mysqli_query($this -> link, $query);
if(mysqli_errno($this -> link)) {
if(!empty($this -> note)) {
$this -> note -> pushNotification('error', "Error executing blank query");
}
$this -> write_to_log('Error: ' . mysqli_error($this -> link) . ' Query: ' . $query);
return false;
} else {
return $result;
}
}
如果我这样做:
$this -> db -> blank_query("INSERT INTO `customer_register` ( `c_email`,`web_customer_id`,`c_realname`,`c_password` ) VALUES ( 'support@mail.com','1','Name','test' )");
一切都很好,但这可能是在页面加载时总计10,20或100个查询,所以我需要快速。 该事务也在phpmyadmin中正常提交:
"START TRANSACTION; INSERT INTO `customer_register` ( `c_email`,`web_customer_id`,`c_realname`,`c_password` ) VALUES ( 'support@mail.com','1','Name','test' ); COMMIT;"