gpt4 book ai didi

php - 从数据库中获取最新值,检查值并在 PHP 中应用自身

转载 作者:行者123 更新时间:2023-11-28 01:31:47 25 4
gpt4 key购买 nike

我是 PHP 的新手,所以不确定我这样做是否正确,但有人可以帮我多看两眼吗?

基本上我想要的是我们可以定义发票编号的初始开始,在此示例中为 00001 - 如果在最新条目的发票表中找不到它,则显示 00001 否则我需要它来获取最新和将 1 添加到创建下一张发票时要显示的值。

我猜它需要一个条件,以便如果实际表为空以及如果没有结果从 00001 开始

PHP 到目前为止

HTML:

<input type="text" id="invoice_id" value="AMBMN<?php getInvoiceId(); ?>">

PHP:

// Initial invoice number
function getInvoiceId() {

define('INVOICE_INITIAL_VALUE', '00001');

// Connect to the database
$mysqli = new mysqli(DATABASE_HOST, DATABASE_USER, DATABASE_PASS, DATABASE_NAME);

// output any connection error
if ($mysqli->connect_error) {
die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}

$query = "SELECT invoice FROM invoices ORDER BY invoice DESC LIMIT 1";

// mysqli select query
$result = $mysqli->query($query);

//Invoice length
$invoice = $row['invoice'];

if(!$result){
echo INVOICE_INITIAL_VALUE;
} else {
// check if the initial invoice ID has already been used and if not start from that value else from the next value
if($invoice != INVOICE_INITIAL_VALUE) {
echo $invoice;
} else {
echo INVOICE_INITIAL_VALUE;
}
}

// Frees the memory associated with a result
$result->free();

// close connection
$mysqli->close();

}

最佳答案

当您获得查询结果后,为发票编号创建一个变量,您可以这样做:

//Invoice number
define('INVOICE', '00001');

//Invoice length
$invoice_len = strlen(INVOICE);

//sprintf formatting string
$spf_format = '%0' . $invoice_len . 'd';

//Replace the 5 in %05d with however many characters there will be.
//In your case there are 5.
//It is now formatted with the 0s at the start.
$invoice = sprintf($spf_format, INVOICE);

echo $invoice;

当你说它从那个点中断时,你的意思是它完全停止了吗?或者它是否也显示结束标记?

既然我在这里,我不妨解释一下 sprintf 中的“%05d”在做什么。

sprintf 命令用于改变变量的格式。开头的 % 只是定义的开头,它始终存在。 0 表示它后面的数字将控制变量的确切长度。所以我们将它设置为 5,因为有 5 个字符,使用这种格式不太可能达到 6,但如果达到了,那么你可以很容易地解决这个问题。这就是 %05 - 现在末尾的 d 基本上告诉 PHP 将变量视为整数,但将其显示为带符号的十进制(带符号意味着它可以为负数)。

总而言之,它所做的就是告诉 PHP 将该变量视为 5 个字符长的整数并将其显示为小数,以便所有 0 都保留。

关于php - 从数据库中获取最新值,检查值并在 PHP 中应用自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30036269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com