In PHP, what are the advantages of using PDO over MySQLi for database connections, and how can one ensure secure and efficient data retrieval and insertion?
When it comes to database connections in PHP, using PDO over MySQLi offers several advantages such as support for multiple database drivers, prepared statements to prevent SQL injection attacks, and object-oriented approach for easier data manipulation. To ensure secure and efficient data retrieval and insertion, always use prepared statements with parameterized queries, validate user input, and sanitize data before interacting with the database.
// Using PDO for secure and efficient data retrieval and insertion
// Database connection
$dsn = 'mysql:host=localhost;dbname=mydatabase';
$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();
}
// Secure data retrieval
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
$user = $stmt->fetch(PDO::FETCH_ASSOC);
// Secure data insertion
$stmt = $pdo->prepare("INSERT INTO users (username, email) VALUES (:username, :email)");
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$stmt->execute();