原创:商城开发中,真正唯一订单雏形-插入订单,获得订单的id,把订单id拼装到自定义订单号中

@$mysql = mysql_connect('localhost','root','root');
mysql_query('set names utf8');
mysql_select_db('test');

//$sql="insert into ddd2 set uid='".$str."'";
//ddd2表模拟订单表,字段uid模拟订单号字段
$sql="insert into ddd2 set addtime='".date("Y-m-d H:i:s")."'";
mysql_query($sql);
//$id=mysql_insert_id();
$idrs=mysql_fetch_array(mysql_query("SELECT LAST_INSERT_ID()"));//用此代替mysql_insert_id()就可以解决非int型自增长取值不准的bug问题。
$id=$idrs[0];
//我们可以在更新前对$iddiy进行拼装。
$iddiy=$id;
$sql="update ddd2 set uid='".$iddiy."' where id=".$id;//uid模拟订单号字段
mysql_query($sql);
//apache下自带的ab.exe并发高压测试
//ab.exe -c 100 -n 100 http://127.0.0.1/a1.php

附上测试表结构:

CREATE TABLE `ddd2` (
  `id` bigint(11) NOT NULL AUTO_INCREMENT,
  `uid` varchar(100) DEFAULT NULL,
  `addtime` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uid` (`uid`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

 

$idrs=mysql_fetch_array(mysql_query("SELECT LAST_INSERT_ID()")); 有人会问为什么这样写呢?因为mysql_insert_id()是有bug的。在int型下是可以在的,在非int型如:bigint下,mysql_insert_id()取值就不准了。

本文章由:徐多蔚  徐老师 xuduowei原著。转载请注明来源,谢谢。

 


关注公众号,了解更多it技术(it问答网

发表评论

电子邮件地址不会被公开。