What are the advantages and disadvantages of using database IDs versus custom-generated customer numbers in PHP for an online shop?

When designing an online shop in PHP, one decision to make is whether to use database IDs or custom-generated customer numbers to uniquely identify customers. Using database IDs can simplify database queries and ensure uniqueness, but may expose internal information to users. On the other hand, custom-generated customer numbers can provide more control over the format and display of customer identifiers, but may require additional validation to ensure uniqueness.

// Using database IDs for customer identification
// Advantage: Simplifies database queries
// Disadvantage: May expose internal information to users

// Example code snippet using database IDs
// Assuming $customerId is fetched from the database
$customerId = 123; // Sample database ID
$query = "SELECT * FROM customers WHERE id = $customerId";

// Using custom-generated customer numbers for identification
// Advantage: More control over format and display
// Disadvantage: Requires additional validation for uniqueness

// Example code snippet using custom-generated customer numbers
// Generating a unique customer number
$customerNumber = uniqid("CUST"); // Generating a unique customer number with prefix "CUST"
$query = "SELECT * FROM customers WHERE customer_number = '$customerNumber'";