What are the best practices for handling database queries in PHP scripts to ensure security and efficiency?

When handling database queries in PHP scripts, it is important to use prepared statements to prevent SQL injection attacks and ensure security. Additionally, it is recommended to properly sanitize user input to prevent any malicious code from being executed. To improve efficiency, avoid executing multiple queries within loops and consider using indexes on frequently queried columns.

// Example of handling a database query using prepared statements and input sanitization

// Establish a database connection
$pdo = new PDO('mysql:host=localhost;dbname=mydatabase', 'username', 'password');

// User input
$user_input = $_POST['user_input'];

// Prepare a SQL statement with a placeholder
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");

// Bind the user input to the placeholder
$stmt->bindParam(':username', $user_input);

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

// Fetch the results
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Sanitize user input
$user_input_sanitized = filter_var($user_input, FILTER_SANITIZE_STRING);

// Use the sanitized input in the query
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(':username', $user_input_sanitized);
$stmt->execute();