mysql前导零被存储但显示错误

0mkxixxg  于 2021-06-24  发布在  Mysql
关注(0)|答案(3)|浏览(256)

我尝试了mysql中的许多类型的字段来存储数字,尝试了int、bigint和前导零,char和varchar来存储发票号
我需要发票号码以0000000001开始,我将其手动存储在phpmyadmin中
现在我想显示它,我没有得到前导零。。。。
这是数据库
字段“folio”char 15存储我已手动执行0000000001它在phpmyadmin上显示良好
但问题是

<?php $maxprod=mysqli_query($datacenter, 
"SELECT * FROM ventas 
WHERE documento = 'boleta' 
ORDER BY id DESC LIMIT 1");
while($lastcode=mysqli_fetch_assoc($maxprod)){?>

<input type="text" value="<?php echo $lastcode['folio']+1?>">
   <?php }?>

查询的结果是1—只有1—它不显示所有其他零
知道为什么吗?

mwyxok5s

mwyxok5s1#

这将检索字符串形式的数字,并将其显示为文本。
稍后您可以在您的编码环境中操作它。

SELECT CAST(document_number AS CHAR) FROM ...
dba5bblo

dba5bblo2#

echo $lastcode['folio'] 应该用前导零显示结果,但不是 $lastcode['folio']+1 .
一旦你这么做了 +1 ,结果不再是字符串。这个 $lastcode['folio'] 变量被转换成一个数字,以便对其进行算术运算。
前导零只是格式化,不需要与数字一起存储。如果您需要一个自动递增的数字,只需在mysql中使用一个自动递增整数,并在打印时用前导零格式化数字。

s5a0g9ez

s5a0g9ez3#

如果对字符串执行任何数字操作,php会自动将其转换为数字。但您可以将订单号保留为整数形式,必要时用零填充: str_pad($lastcode['folio']+1, 15, "0", STR_PAD_LEFT);

相关问题