1 回答

TA貢獻1877條經驗 獲得超6個贊
可以同時執行 DELETE 和 INSERT,但它們需要是單獨的查詢。如果您想讓這兩個操作都成為原子操作(都必須成功,否則都不應該執行),那么您需要使用DB transactions。
要將 2 個查詢作為單個原子語句執行,您可以執行以下操作:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$connection = new mysqli();
$connection->set_charset('utf8mb4'); // always set the charset
if (isset($_POST['update'])) {
? ? $id = $_POST['delete_id'];
? ? $name = $_POST['edit_name'];
? ? $name2 = $_POST['edit_name2'];
? ? $pic = $_POST['edit_pic'];
? ? $contactnumber = $_POST['edit_contact'];
? ? $address = $_POST['edit_address'];
? ? $details = $_POST['edit_details'];
? ? // start transaction
? ? $connection->begin_transaction();
? ? try {
? ? ? ? $stmt = $connection->prepare('INSERT INTO tabletest (name,name2,pic,contact,address,details,) VALUES (?,?,?,?,?,?)');
? ? ? ? $stmt->bind_param('ssssss', $name, $name2, $pic, $contactnumber, $address, $details);
? ? ? ? $stmt->execute();
? ? ? ? $stmt = $connection->prepare('DELETE FROM tabletest2 WHERE id=?');
? ? ? ? $stmt->bind_param('s', $id);
? ? ? ? $stmt->execute();
? ??
? ? ? ? // save data and end transaction
? ? ? ? $connection->commit();
? ? ? ? $_SESSION['success'] = "Data Updated";
? ? ? ? header('Location: blankpage.php');
? ? } catch (Exception $e) {
? ? ? ? $connection->rollback();
? ? ? ? $_SESSION['status'] = "Error, Please try again";
? ? ? ? header('Location: blankpage.php');
? ? }
}
- 1 回答
- 0 關注
- 125 瀏覽
添加回答
舉報