What is the issue with generating consecutive invoice numbers in PHP?

Generating consecutive invoice numbers in PHP can lead to potential issues such as duplicate numbers if multiple requests are made simultaneously. To solve this problem, you can use a database to store the last generated invoice number and ensure that each new invoice number is unique by incrementing the last number by one.

// Connect to database
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "invoices";

$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Get last invoice number from database
$sql = "SELECT invoice_number FROM invoices ORDER BY invoice_number DESC LIMIT 1";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    $row = $result->fetch_assoc();
    $last_invoice_number = $row["invoice_number"];
} else {
    $last_invoice_number = 0;
}

// Generate new invoice number
$new_invoice_number = $last_invoice_number + 1;

// Insert new invoice number into database
$sql = "INSERT INTO invoices (invoice_number) VALUES ($new_invoice_number)";
if ($conn->query($sql) === TRUE) {
    echo "New invoice number generated: " . $new_invoice_number;
} else {
    echo "Error generating invoice number: " . $conn->error;
}

// Close database connection
$conn->close();