每年使用php mysql重置发票编号

每年使用php mysql重置发票编号,php,mysql,Php,Mysql,我需要准备发票使用php mysql,我已经准备好了,我的问题是每年的发票号码重置为第一 例: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) DEFAUL

我需要准备发票使用php mysql,我已经准备好了,我的问题是每年的发票号码重置为第一

例: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,否则应增加上一个编号。

您忘记初始化
$inv

试一试

此外,您没有在查询中选择
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

首先,数字是一个字符串。删除“”并仅输入数字。如果($count==0)

你的问题是什么?
如果($inv==0'){$inv='1';}否则{$inv++;}
相当于
$inv++
如果发现空行,我设置了$inv=0,那么下一个条件是$inv=0,那么我已经设置了$inv=1。其他明智的前$inv++
$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