PHP Connect to MySQL
Connecting PHP to MySQL
PHP supports two main extensions for working with MySQL databases:
- MySQLi (MySQL Improved)
- PDO (PHP Data Objects)
Should I Use MySQLi or PDO?
If you need a short answer, it would be "Whatever you like".
Both MySQLi and PDO have their advantages:
PDO will work on 12 different database systems, whereas MySQLi will only work with MySQL databases.
So, if you have to switch your project to use another database, PDO makes the process easy. You only have to change the connection string and a few queries. With MySQLi, you will need to rewrite the entire code - queries included.
Both are object-oriented, but MySQLi also offers a procedural API.
Both support Prepared Statements. Prepared Statements protect from SQL injection, and are important for web application security.
MySQL Examples in Both MySQLi and PDO Syntax
In this, and in the following chapters we demonstrate three ways of working with PHP and MySQL:
- MySQLi (object-oriented)
- MySQLi (procedural)
- PDO
MySQLi Installation
For Linux and Windows: The MySQLi extension is automatically installed in most cases, when php mysql package is installed.
For installation details, go to: http://php.net/manual/en/mysqli.installation.php
PDO Installation
For installation details, go to: http://php.net/manual/en/pdo.installation.php
Open a Connection to MySQL
Before we can access data in the MySQL database, we need to be able to connect to the server.
A connection typically requires four pieces of information: the server name, username, password, and database name:
Example - MySQLi Object-Oriented
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "mydb";
// Create connection
$conn = new mysqli($servername, $username, $password,
$dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
Example - MySQLi Procedural
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "mydb";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
Example - PDO
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "mydb";
try {
$conn = new PDO("mysql:host=$servername;dbname=,$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
Tip: A great benefit of PDO is that it has an exception class to handle any problems that may occur in our database queries. If an exception is thrown within the try{ } block, the script stops executing and flows directly to the first catch(){ } block.
Close the Connection to MySQL
The connection will be closed automatically when the script ends. To close the connection before, use the following:
Example - MySQLi Object-Oriented:
$conn->close();
Example - MySQLi Procedural:
mysqli_close($conn);
Example - PDO:
$conn = null;