Introduction
I am preparing to use a basic script to cover how you can connect to a MySQL database using PDO. This script is meant for educational purposes (introductory class on PHP/MySQL) and does of course not cover all security aspects of database connections.
Points of focus
- Conformity to the PSR-1 and PSR-2 standards.
- Structure for connecting to database connection.
- Security aspects that has not been covered.
Code (settings.php):
<?php
// Defines database connection information
$settings = [
'host' => '127.0.0.1',
'name' => 'c9',
'port' => '3306',
'charset' => 'utf8',
'username' => 'admin',
'password' => 'root'
];
?>
Code (db.php):
<?php
// Includes database connection information
require_once('../settings.php');
// Establishes connection to database server
try {
$dbh = new PDO(
sprintf(
'mysql:host=%s;dbname=%s;port=%s;charset=%s',
$settings['host'],
$settings['name'],
$settings['port'],
$settings['charset']
),
$settings['username'],
$settings['password']
);
// Prevents emulated prepare statements and sets error mode
// to PDO::ERRMODE_EXCEPTION
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
// Prints out errors raised by PDO
catch (PDOException $e) {
die('Error: ' . $e->getMessage());
}
?>
The ../
for settings.php
indicates that the file is outside document root for security purposes. Much appreciated in advance for any comments that could improve this code.