以上是改过的代码,但是在原来查询的基础上再查询和刷新,结果$serilize还是201110100001不变,如何能让其自增1,变成201110100002 if ($is_query) { $date = date("Y-m-d"); $sql = "select * from link_rk where date_format(time ,'%Y-&m-%d')='".$date."' order by time desc limit 1"; $date2 = date("Ymd"); // echo $sql; $res = mysql_query($sql); $result = mysql_fetch_array($res); if(!$result){ $num = "0001"; $serilize = $date2.$num; mysql_query("insert into link_rk(serilize_num,time) values('".$serilize."','".$date."')"); } else{ $num = substr($result['serilize_num'],8,4); $serilize = $date2.$num; mysql_query("update link_rk set serilize_num='".$serilize."' where id=".$result['id'].""); } echo $serilize; echo '<br />'; }
else这里更新的时候没有+1 else{ $num = intval(substr($result,8,4)) + 1; $num = sprintf("%04d",$num); $serilize = $date.$num; mysql_query("update link_rk set serilize_num='".$serilize."' where id=".$result['id'].""); }
还在纠结这个问题呀先建一个表 CREATE TABLE IF NOT EXISTS `serial` ( `prefix` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `id` int(4) unsigned zerofill NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) 插入时执行INSERT INTO `test`.`serial` (`prefix`, `id`) VALUES (CURRENT_TIMESTAMP, NULL); 取回时执行 SELECT concat(date_format(prefix,'%Y%m%d'),id) as No FROM `serial` order by id desc limit 1 每天第一次插入时先执行 TRUNCATE TABLE `serial`
$date = date("Y-m-d");
$sql = "select * from link where date_format(time ,'%Y-&m-%d')='".$date."' order by time desc limit 1";
$res = mysql_query($sql);
$result = mysql_fetch_array($sql);
if(!$result){
$num = "0001";
$serilize = $date.$num;
mysql_query("insert into link(serilize,time) values('$serilize','$date')");
}
else{
$num = substr($result['serilize_num'],8,4);
$serilize = $date.$num;
mysql_query("update link set serilize='$serilize' where id=$result['id']");
}
echo $serilize;
}示例代码。
不是很明白这个意思啊。 $sql = "select * from link where date_format(time ,'%Y-&m-%d')='".$date."' order by time desc limit 1";这句何解啊?
查询当天的数据记录是否存在,不存在的话插入当天的记录,存在的话update为最新的。
那句sql的意义是 先查询有没有今天的日期 没有的设为 0001
if ($is_query)
{
$date = date("Y-m-d");
$sql = "select * from link_rk where date_format(time ,'%Y-&m-%d')='".$date."' order by time desc limit 1";
$date2 = date("Ymd");
// echo $sql;
$res = mysql_query($sql);
$result = mysql_fetch_array($res);
if(!$result){
$num = "0001";
$serilize = $date2.$num;
mysql_query("insert into link_rk(serilize_num,time) values('".$serilize."','".$date."')");
}
else{
$num = substr($result['serilize_num'],8,4);
$serilize = $date2.$num;
mysql_query("update link_rk set serilize_num='".$serilize."' where id=".$result['id']."");
}
echo $serilize;
echo '<br />';
}
$num = intval(substr($result,8,4)) + 1;
$num = sprintf("%04d",$num);
$serilize = $date.$num;
mysql_query("update link_rk set serilize_num='".$serilize."' where id=".$result['id']."");
}
CREATE TABLE IF NOT EXISTS `serial` (
`prefix` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`id` int(4) unsigned zerofill NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
)
插入时执行INSERT INTO `test`.`serial` (`prefix`, `id`) VALUES (CURRENT_TIMESTAMP, NULL);
取回时执行
SELECT concat(date_format(prefix,'%Y%m%d'),id) as No FROM `serial` order by id desc limit 1
每天第一次插入时先执行
TRUNCATE TABLE `serial`