中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中執行MYSQL事務怎么解決數據寫入不完整等情況

發布時間:2021-08-09 12:41:40 來源:億速云 閱讀:162 作者:chen 欄目:開發技術

這篇文章主要講解了“PHP中執行MYSQL事務怎么解決數據寫入不完整等情況”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“PHP中執行MYSQL事務怎么解決數據寫入不完整等情況”吧!

近來稍有時間研究了下MYSQL中的事務操作,在很多場合下很是適用,譬如在注冊的時候需要初始化很多張關聯表的時候,問答回復的時候需要至少同時操作兩張表,這些都會在某些時候只能成功更新一張表,而另外的SQL語句出現錯誤,正常的操作會導致初始化了一張表 ,其他的都木有能初始化,這個時候就會導致用戶表里的用戶信息已經執行插入,導致提示注冊失敗,但是用戶已經注冊了部分信息,這個時候需要程序員去數據庫刪除相應的數據是一個比較不好的事情。

因此這邊考慮使用事務,事務可以進行模擬SQL操作,當所有的SQL都操作成功的時候才進行SQL操作,只要有一個操作失敗就回滾當前事務的所有SQL操作,避免出現上面描述中出現的數據寫入不完整等情況。

下面是鄙人寫的一小段代碼,歡迎大家參考和提出意見:

復制代碼 代碼如下:


/**
* @todo 多條sql的事務處理
* @param $sqls array
* @return boole true/false
*/
public function doArraySqlActionsTran($password,$sqls){
$db = $this -> doSqlLink($password);//打開數據庫鏈接
$db -> autocommit(FALSE);//設置為不自動提交,因為MYSQL默認立即執行
//獲取SQL執行結果數組
for ($i=0;$i<count($sqls);$i++){
$result[$i] = $db -> query($sqls[$i]);
}
//解析SQL執行結果數組
for ($j=0;$j<count($result);$j++){
if ($result[$j]==FALSE){
$result[$j]='false';
}else{
$result[$j]='true';
}
}
//查找SQL結果數組中是否存在false結果集
if (in_array('false',$result)){
$sqlResult=FALSE;
}else{
$sqlResult==TRUE;
}
//根據結果集進行數據庫回滾或者執行操作
if ($sqlResult==FALSE){
$db -> rollback();//判斷當執行失敗時回滾
$return=FALSE;// 正式環境中使用
//$return='ROOLBACK';//test 標記使用
}else{
$db -> commit();//執行事務s
$return=TRUE;// 正式環境中使用
//$return='COMMIT';//test 標記使用
}
$db->autocommit(true); //設置為非自動提交——事務處理
$db->close();//關閉連接
return $return;
}

感謝各位的閱讀,以上就是“PHP中執行MYSQL事務怎么解決數據寫入不完整等情況”的內容了,經過本文的學習后,相信大家對PHP中執行MYSQL事務怎么解決數據寫入不完整等情況這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

田阳县| 乐平市| 花莲县| 东平县| 沈丘县| 静宁县| 黑龙江省| 墨江| 揭西县| 房山区| 修水县| 交城县| 凭祥市| 濮阳市| 汝南县| 翼城县| 霍邱县| 玉树县| 方正县| 社会| 兰西县| 黄浦区| 全椒县| 信宜市| 南澳县| 南召县| 固安县| 手游| 达孜县| 日喀则市| 铜梁县| 清原| 崇仁县| 根河市| 阿瓦提县| 兴安县| 宁城县| 宜兰市| 平山县| 藁城市| 恩平市|