What are the best practices for handling database queries and values in PHP to prevent unexpected behavior?

To prevent unexpected behavior when handling database queries and values in PHP, it is essential to use prepared statements to prevent SQL injection attacks and properly sanitize user input. Additionally, always validate and sanitize input data before using it in queries to avoid unexpected results or errors.

// Example of using prepared statements to prevent SQL injection
$pdo = new PDO("mysql:host=localhost;dbname=myDB", $username, $password);
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->execute();
$results = $stmt->fetchAll();

// Example of sanitizing user input before using it in a query
$username = filter_var($_POST['username'], FILTER_SANITIZE_STRING);
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->execute();
$results = $stmt->fetchAll();