看板 PHP 關於我們 聯絡資訊
小弟目前正在學習mysql的transaction的寫法, 我的程式碼如下: function qnr($qstring) { $this->dbh->beginTransaction(); try{ $rs = $this->dbh->prepare($qstring); if(!$rs->execute()) { echo 'Error!: ' . $qstring . '<br />'; exit; } $this->dbh->commit(); }catch (PDOException $e) { $this->dbh->rollBack(); echo 'Error!: ' . $e->getMessage() . '<br />'; exit; } } 其中之所以會有$this,是因為這個function寫在一個class裡面。 我有試著帶入一段錯誤的$qstring去執行(把insert寫成inser), 不過執行結果卻沒有echo出Error,而是沒有任何反應。 我想請問大大們,我這樣寫的順序是正確的嗎? 還有我那段if(!$rs->execute())的判斷是從網路上學來的, 我覺得應該有更正式的寫法,不知道有沒有? 我會去學transaction是因為有客戶的需求, 他要求程式能在資料儲存之後計算出「儲存成功」與「儲存失敗」的次數。 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.165.33.44 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1421651584.A.B72.html
crossdunk: 我的beginTransaction 都放在try裡面 01/19 15:27
knives: 執行Rollback 的時候就跳出了,你應該把錯誤訊息塞在rollb 01/19 21:01
knives: ack裡面 01/19 21:01