PHP -подключение к MySQL
PHP 5 и более поздние версии могут работать с базой данных MySQL, используя:
- Расширение MySQLi («i» означает улучшенное)
- PDO (объекты данных PHP)
Более ранние версии PHP использовали расширение MySQL. Однако это расширение устарело в 2012 году.
Должен ли я использовать MySQLi или PDO?
Если вам нужен короткий ответ, это будет «Как вам угодно».
И MySQLi, и PDO имеют свои преимущества:
PDO будет работать с 12 различными системами баз данных, тогда как MySQLi будет работать только с базами данных MySQL.
Итак, если вам нужно переключить свой проект на использование другой базы данных, PDO упрощает этот процесс. Вам нужно только изменить строку подключения и несколько запросов. С MySQLi вам нужно будет переписать весь код, включая запросы.
Оба являются объектно-ориентированными, но MySQLi также предлагает процедурный API.
Оба поддерживают подготовленные заявления. Подготовленные операторы защищают от SQL-инъекций и очень важны для безопасности веб-приложений.
Примеры MySQL в синтаксисе MySQLi и PDO
В этой и следующих главах мы демонстрируем три способа работы с PHP и MySQL:
- MySQLi (объектно-ориентированный)
- MySQLi (процедурный)
- ЗОП
Установка MySQLi
Для Linux и Windows: В большинстве случаев расширение MySQLi устанавливается автоматически при установке пакета php5 mysql.
Для получения подробной информации об установке перейдите по адресу: http://php.net/manual/en/mysqli.installation.php
Установка PDO
Для получения подробной информации об установке перейдите по адресу: http://php.net/manual/en/pdo.installation.php
Откройте соединение с MySQL
Прежде чем мы сможем получить доступ к данным в базе данных MySQL, нам нужно подключиться к серверу:
Пример (объектно-ориентированный MySQLi)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
Обратите внимание на объектно-ориентированный пример выше:
$connect_error не работал до PHP 5.2.9 и 5.3.0. Если вам необходимо обеспечить совместимость с версиями PHP до 5.2.9 и 5.3.0, используйте вместо этого следующий код:
// Проверить соединение
if (mysqli_connect_error()) {
die("Ошибка подключения к базе данных: " . mysqli_connect_error());
}
Пример (процедурный MySQLi)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
Пример (PDO)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $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();
}
?>
Примечание. В приведенном выше примере PDO мы также указали базу данных (myDB) . Для подключения к PDO требуется действующая база данных. Если база данных не указана, генерируется исключение.
Совет: Большим преимуществом PDO является то, что он имеет класс исключений для обработки любых проблем, которые могут возникнуть в наших запросах к базе данных. Если в блоке try{ } генерируется исключение, сценарий прекращает выполнение и переходит непосредственно к первому блоку catch(){ }.
Закрыть соединение
Соединение будет закрыто автоматически, когда сценарий завершится. Чтобы закрыть соединение раньше, используйте следующее:
Объектно-ориентированный MySQLi:
$conn->close();
Процедура MySQLi:
mysqli_close($conn);
ПДО:
$conn = null;