拖拖拽拽建网店 轻轻松松赚钱 免费体验 ECshop下载 | ECshop商业授权咨询
安装指南 | 升级指南 | 用户手册 | 在线帮助
进入论坛发帖前请先读本帖 | 常见问题
ECShop免费招募官方插件合作伙伴
ECShop商业授权咨询
ECshop官方免费安全测评
财付通双接口发布
ecshop 最新补丁 | 支付宝升级包
ECShop 模板制作手册 | ECShop 最新模板
ECShop V2.7.2模板
返回列表 发帖

[使用操作] 提交订单的时候出现这个错误

提示: 该帖被管理员或版主屏蔽
签名被屏蔽
ECShop下载                             ECShop商业授权                             ECshop官方免费安全测评

Duplicate entry '2011033077650' for key 'order_sn'

订单sn 重复了,是不是你时间调过
ECSHOP 技术支持找 phpsir QQ 733905
ECShop下载                             ECShop商业授权                             ECshop官方免费安全测评

TOP

你是不是将数据库字段值弄重复了。不然不大可能出这个问题
ECShop下载                             ECShop商业授权                             ECshop官方免费安全测评

TOP

我时间都没改过,这个地方程序也根本没改过的,提交订单的时候只有后退再接着提交才会成功,有时候要后退几次才行。

TOP

我看程序里有提交订单之前会先查询下是否有重复订单号的步骤。

TOP

这个问题也不是时刻出现,只是在某几个电脑上会经常出现。我的电脑就一次都没出现

TOP

是否修改过程序?
ECShop下载                             ECShop商业授权                             ECshop官方免费安全测评

TOP

有木有人知道这个问题哦?
ECShop下载                             ECShop商业授权                             ECshop官方免费安全测评

TOP

/* 插入订单表 */
    $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);
这个地方已经判断了order_sn重复的问题,为啥还会出现这个错误呢?请高手帮忙解答,谢谢

TOP

ECShop下载                             ECShop商业授权                             ECshop官方免费安全测评

TOP

我的安装在linux下,也时不时出现这个问题,应该是订单号没有判断是否已存在,我的做法是修改代码,希望能帮到你。


修改get_order_sn()函数,这个函数在/includes/lib_order.php约842行处,修改为:

  1. /**
  2. * 得到新订单号
  3. * @return string
  4. */
  5. function get_order_sn()
  6. {
  7. /* 选择一个随机的方案 */
  8. mt_srand((double) microtime() * 1000000);
  9. $sn = date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);

  10. /* 检查订单号是否重复 */
  11. $is_existed = $GLOBALS['db']->getOne("SELECT COUNT(*) FROM ".$GLOBALS['ecs']->table('order_info'). " WHERE `order_sn`='{$sn}'");
  12. if ($is_existed != '0') get_order_sn();

  13. return $sn;
  14. }
复制代码

TOP

谢谢,不知道怎么回事,最近又没出现过了,也没改过任何代码,如果再出现就用你这个代码了

TOP

mark一下,经常出现这个问题
good good study
day day up
ECShop下载                             ECShop商业授权                             ECshop官方免费安全测评

TOP

应该是时间问题
ECShop下载                             ECShop商业授权                             ECshop官方免费安全测评

TOP

TOP

返回列表