How can prepared statements be effectively used in PHP MySQLi for secure database queries?

Prepared statements can be effectively used in PHP MySQLi to secure database queries by preventing SQL injection attacks. By using placeholders for parameters in the SQL query and binding the actual values to these placeholders, it ensures that user input is not directly concatenated into the query, thus preventing malicious SQL code execution.

// Connect to the database
$mysqli = new mysqli("localhost", "username", "password", "database");

// Prepare a SQL statement with placeholders
$stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ? AND password = ?");

// Bind parameters to the placeholders
$stmt->bind_param("ss", $username, $password);

// Set the parameters and execute the query
$username = "user123";
$password = "password123";
$stmt->execute();

// Get the results
$result = $stmt->get_result();

// Process the results
while ($row = $result->fetch_assoc()) {
    // Do something with the data
}

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