亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MySQL 多查詢 InnoDB

MySQL 多查詢 InnoDB

PHP
慕容708150 2022-07-29 10:27:58
我是 InnoDB 事務的新手。我正在學習,但我對此有疑問。<?phpinclude_once("../../../../../wp-config.php");global $wpdb;$cats_table     = $wpdb->prefix . "jb_menu_groups";$relation       = $wpdb->prefix . "jb_relations";$mysqli = new mysqli($wpdb->dbhost, $wpdb->dbuser, $wpdb->dbpassword, $wpdb->dbname);if ($mysqli -> connect_errno) {    echo "Failed to connect to MySQL: " . $mysqli -> connect_error;    exit();}// Turn autocommit off$mysqli -> autocommit(FALSE);$mysqli -> query("DELETE FROM $cats_table WHERE id=6");$mysqli -> query("DELETE FROM $relation WHERE groupid=3");// Commit transactionif (!$mysqli -> commit()) {  echo "Commit transaction failed";  exit();}$mysqli -> rollback();$mysqli -> close();?>如果我創建一個錯誤的查詢來測試提交和回滾,則代碼會成功運行另一個查詢。如何在一個事務中執行多個查詢,如果一個查詢有錯誤,請回滾并取消事務?
查看完整描述

1 回答

?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

我個人只使用 PDO 和事務,但這就是它應該如何使用 mysqli:


// start the transaction

$mysqli->autocommit(false);


$catQuery = $mysqli->query("DELETE FROM $cats_table WHERE id=6");

$relationQuery = $mysqli->query("DELETE FROM $relation WHERE groupid=3");


if ($catQuery && $relationQuery) {

    // in case the db server confirms the correctness of the queries, commit the transaction

    $mysqli->commit();

} else {

    // something went wrong

    $mysqli->rollback();

}


// don't forget to reset the transaction mode again, in case your app isn't ending here

$mysqli->autocommit(true);

請確保不要CREATE, ALTER or DROP在事務中包含語句,因為這將立即提交更改。


查看完整回答
反對 回復 2022-07-29
  • 1 回答
  • 0 關注
  • 112 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號