Другой метод, использующий PHP-скрипт для подключения к MySQL - это использование PDO. Этот метод похоже на предыдущий, но с небольшими изменениями:
1. В public_html создайте файл с именем pdoconfig.php и вставьте следующий код. Как всегда, не забудьте заменить значения переменных на информацию из вашей базы данных. Сохраните и закройте файл, как только закончите.
<?php
$host = 'localhost';
$dbname = 'databasename';
$username = 'username';
$password = 'password';
2. Создайте другой файл под названием databaseaseconnect.php в том же каталоге, но с кодом ниже. Если вы назвали предыдущий файл по-другому, убедитесь, что изменили значение required_once
.
<?php
require_once 'pdoconfig.php';
try {
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
echo "Connected to $dbname at $host successfully.";
} catch (PDOException $pe) {
die("Could not connect to the database $dbname :" . $pe->getMessage());
}
Подключение к базе данных PDO требует создания нового объекта PDO с именем источника данных (DSN - Data Source Name), именем пользователя (username) и паролем (password).
DSN определяет тип базы данных, имя базы данных и при необходимости любую другую информацию, связанную с базой данных. Это переменные и значения, которые мы указали в файле dbconfig.php, на которые однажды была сделана ссылка строкой require_once
в databaseaseconnect.php.
В последнем вы найдете код try
… catch
... Это означает, что сценарий попытается подключиться к MySQL, используя предоставленный код, но в случае возникновения проблемы будет выполнен код в разделе catch
. Вы можете использовать блок catch
для отображения сообщений об ошибках подключения или запустить альтернативный код, если блок try не работает.
Если соединение установлено успешно, он выведет сообщение «Подключено к $dbname на $host успешно». Однако, если попытка не удалась, код перехвата покажет простое сообщение об ошибке и завершит сценарий.
Следующий сценарий index.php иллюстрирует, как подключиться к базе данных bookdb
на сервере баз данных MySQL с учетной записью root
:
<?php
require 'config.php'; // подключение файла с данными от БД
$dsn = "mysql:host=$host;dbname=$db;charset=UTF8";
try {
$pdo = new PDO($dsn, $user, $password);
if ($pdo) {
echo "Соединение с базой $db успешно!";
}
} catch (PDOException $e) {
echo $e->getMessage();
}
Как это работает.
Сначала создаем новый объект PDO с именем источника данных, пользователем и паролем. Объект PDO является экземпляром класса PDO.
Далее, выводим сообщение об успешном соединении с БД, если соединение установлено успешно, или сообщение об ошибке, если произошла ошибка соединения.
Если у вас все настроено правильно, вы увидите следующее сообщение:
Соединение с базой bookdb успешно!
Итак! Давайте еще раз кратко.
Сначала создаем файл config.php для хранения параметров базы данных:
<?php
$host = 'localhost';
$db = 'bookdb';
$user = 'root';
$password = '';
Далее, создаем новый файл connect.php, который подключается к базе данных bookdb
:
<?php
require 'config.php';
$dsn = "mysql:host=$host;dbname=$db;charset=UTF8";
try {
$options = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
$conn = new PDO($dsn, $user, $password, $options);
if ($conn) {
echo "Connected to the $db database successfully!";
}
} catch (PDOException $e) {
echo $e->getMessage();
}
Чтобы сделать этот процесс более удобным для повторного использования, вы можете определить функцию с именем connect()
, которая возвращает новое соединение с базой данных и возвращает его из файла connect.php:
<?php
require_once 'config.php';
function connect($host, $db, $user, $password)
{
$dsn = "mysql:host=$host;dbname=$db;charset=UTF8";
try {
$options = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
return new PDO($dsn, $user, $password, $options);
} catch (PDOException $e) {
die($e->getMessage());
}
}
return connect($host, $db, $user, $password);
Чтобы подключиться к базе данных в других файлах, вы используете конструкцию require
следующим образом:
<?php
$pdo = require 'connect.php';
var_dump($pdo);
Конструкция require
загружает файл connect.php и возвращает новый экземпляр PDO
, возвращенный функцией connect()
.