我需要使用php mysql准备发票,我准备好了,我的问题是每年发票编号重置为第一位。
ex:2013 - 1,2013 - 2,2013 -3。 2014-1,2014-2,2014-3。
我的表
CREATE TABLE IF NOT EXISTS `gen` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`invno` int(11),
`prefix` varchar(500) DEFAULT NULL,
`year` year(4) DEFAULT NULL,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`invno`,`year`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
代码是
$year = date("Y", time());
$sql = "SELECT year FROM gen where year = '$year' ";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
$inv = '0';
if ($count == 0) {
$inv = '0';
} else {
$list = mysql_fetch_assoc($result);
$inv = $list['invno'];
}
if ($inv == '0') {
$inv = '1';
} else {
$inv++;
}
echo $inv;
当我执行时它显示'1',表中有更多的发票。我把年份放在了不同的领域。我认为sql查询检查表中的年份,如果在该年份发票编号中找不到任何行应该设置为1,其他明智的增加前一个数字。
答案 0 :(得分:0)
您忘记初始化$inv
尝试
$count = mysql_num_rows($result);
$inv = '0';
if($count == '0')
{
$inv = '0';
.....
您也没有在查询中选择invno
$sql="SELECT year FROM gen where year = '$year' ";
$inv = $list['invno'];
$sql="SELECT max(invno) FROM gen where year = '$year' ";// may be this is what you want
答案 1 :(得分:0)