相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
ecshop怎樣解決重復(fù)訂單問題
ecshop是一個比較優(yōu)秀的網(wǎng)上商城CMS系統(tǒng),其程序比較小,但是電商所涉及到的功能一樣不少。其一些程序核心還是值得借鑒學(xué)習(xí)的。
在做某一個小企業(yè)站的時候,客戶需要新增訂單功能,那么怎么解決重復(fù)訂單問題,因?qū)cshop比較熟,就借鑒了ECSHOP的處理方式;
代碼
$error_no = 0; do { $order['order_sn'] = get_order_sn(); //獲取新訂單號 $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'), $order, 'INSERT'); $error_no = $GLOBALS['db']->errno(); if ($error_no > 0 && $error_no != 1062) { die($GLOBALS['db']->errorMsg()); } } while ($error_no == 1062);
其代碼很好理解,首先對錯誤碼進(jìn)行清零。然后使用do while 進(jìn)行提交(插入訂單表);
正常情況下,至少提交一次。首先,使用訂單號生成程序生成一個新的訂單號,這個訂單號是日期加隨機(jī)生成,雖然重復(fù)的幾率比較小,但是還是不得不防止重復(fù)的現(xiàn)象發(fā)生,所以有了這個處理機(jī)制;
接下來,把獲取到的新訂單號,賦予到訂單數(shù)組 order_sn中,然后開始插入操作;
然后,判斷插入操作是否出錯。因order_sn加入了索引,并且為Unique類型,如果重復(fù),則插入出錯;
如果出錯代碼為除0和1062外的代碼,則彈出出錯消息;
如果出錯代碼為1062,則繼續(xù)提交,直到提交成功。