What potential pitfalls should be considered when allowing users to input and store data in a PHP application, such as room categories and availability?

One potential pitfall when allowing users to input and store data in a PHP application is the risk of SQL injection attacks. To prevent this, you should always sanitize and validate user input before storing it in the database. This can be done by using prepared statements or parameterized queries to ensure that user input is treated as data rather than executable code.

// Example of using prepared statements to prevent SQL injection

// Assuming $conn is the database connection object

// Sanitize and validate user input
$category = filter_var($_POST['category'], FILTER_SANITIZE_STRING);
$availability = filter_var($_POST['availability'], FILTER_VALIDATE_INT);

// Prepare SQL statement
$stmt = $conn->prepare("INSERT INTO rooms (category, availability) VALUES (?, ?)");
$stmt->bind_param("si", $category, $availability);

// Execute the statement
$stmt->execute();

// Close the statement and connection
$stmt->close();
$conn->close();