What are the best practices for preparing and executing PDO queries in PHP to avoid discrepancies in results?

When preparing and executing PDO queries in PHP, it is important to use parameterized queries to prevent SQL injection attacks and ensure data integrity. Additionally, always sanitize user input before using it in a query to avoid discrepancies in results. Lastly, make sure to handle errors properly to troubleshoot any issues that may arise during query execution.

// Example of preparing and executing a PDO query with parameterized queries and error handling

// Connect to the database
$dsn = 'mysql:host=localhost;dbname=my_database';
$username = 'username';
$password = 'password';

try {
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

// Prepare and execute a parameterized query
$name = 'John Doe';
$stmt = $pdo->prepare('SELECT * FROM users WHERE name = :name');
$stmt->bindParam(':name', $name);
$stmt->execute();

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

// Handle any errors
if (!$results) {
    echo 'No results found';
} else {
    foreach ($results as $row) {
        echo $row['name'] . '<br>';
    }
}