php怎么获取同一页面在值,同一页中屡次调用自定义函数,获取到了相同的值

博客讨论了一个PHP编程中的问题,作者在自定义函数`pici()`中尝试获取并递增流水号下的pi字段值,但在多次调用时,预期的递增并未发生。问题在于`ifnull(max(pi)+1,'1')`的SQL查询,当max(pi)为null时,null + 1仍返回null,导致始终返回1。解决方案是统计非'预提交'状态的记录数来实现pi的正确递增。
摘要由CSDN通过智能技术生成

同一页中多次调用自定义函数,获取到了相同的值

我自定义一个函数pici(),它的作用是:获取到某流水号下的pi字段的值,然后+1(当没有这个流水号的记录时,取值0+1=1)

然后依次向数据库中插入几条记录,形式大概为:

流水号  pi  产品部件

1         1        门套..

1         2        门扇..

1         3        线条..

2         1        门套..

2         2        门扇..

2         3        线条..

但是在PHP中,用某页调用的时候,本应该每次都检索数据库,得到的值为1、2、3…… 这样子,可是,获取的值全部为1

部分代码附在下面,恳请答疑。先谢谢

这里是自定义函数pici()

function pici(){

$SQL = "select ifnull(max(pi)+1,'1') pi from bill where produce_no='预提交'";

$query=mysql_query($SQL);

$rs=mysql_fetch_array($query);

$svc=$rs[pi];

return $svc;

}

下面是调用pici(),然后将3条数据插入数据库//门扇参数

mysql_query("insert into bill (color,series,produce_no,pi,prod_type,stuff_id,z,val,amount,typein) values ('$_GET[color]','$_GET[series]','$produce_no','".pici()."','$prod_type','$norms_stuff_id','门扇型号','$_GET[model_1]','$men_shu','$_SESSION[login_id]')");

//门套参数

mysql_query("insert into bill (color,produce_no,prod_type,pi,stuff_id,z,val,amount,typein) values ('$_GET[color2]','$produce_no','$prod_type','".pici()."','2','门套长','$mentaochang_shu','$mentao_shu_2','$_SESSION[login_id]')");

//线条规格

mysql_query("insert into bill (color,produce_no,prod_type,pi,stuff_id,z,val,amount,typein) values ('$_GET[color3]','$produce_no','$prod_type','".pici()."','3','线条规格','$_GET[norms_3]','$xiantiao_shu','$_SESSION[login_id]')");

------解决方案--------------------

本帖最后由 xuzuning 于 2012-11-30 16:29:00 编辑

怎么又开一贴?分多了?

我这样理解

流水号  pi  产品部件  produce_no

1      1   门套..

1      2   门扇..

1   null   线条..  预提交

然后是

1      3   线条..

这样一个过程,对吧?

------解决方案--------------------

还是 ifnull(max(pi)+1,'1') 的问题

你可想一想:

如果 max(pi) 为 null 因为是“预提交”,pi 无值

那么 null + 1 等于什么呢?

如果等于 null 那么就返回 '1'

如果等于 1 那还是返回 1

是这样的吧?

你若想使 pi 递增,应统计非预提交的记录个数再加 1

------解决方案--------------------

你有 where 1=2

能出结果才怪呢?

你去问问你的同事,他们会告诉你你哪里错了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值