В этом уроке вы узнаете, как создать новый экземпляр базы данных в MySQL для практики работы с PDO. Это продолжение двух статей по по работе с PDO — PDO: подготовленные запросы и PDO: cоединение с Базой Данных.

Создание базы данных

Сначала войдите на сервер баз данных MySQL под пользователем root из командной строки в Windows или терминала в macOS и Linux:

mysql -u root

И вам будет предложено ввести пароль; введите пароль для пользователя root, и вы подключены к серверу MySQL.

Далее создайте базу данных bookdb, выполнив следующий запрос CREATE DATABASE:

CREATE DATABASE IF NOT EXISTS bookdb;

Затем выберем нужную нам базу данных bookdb:

USE bookdb;

После этого выполните следующий запрос CREATE TABLE для создания таблицы publishers:

CREATE TABLE IF NOT EXISTS publishers (
    publisher_id INT AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    PRIMARY KEY (publisher_id)
);

Наконец, выполните следующий запрос CREATE TABLE для создания таблицы books:

CREATE TABLE IF NOT EXISTS books (
    book_id INT AUTO_INCREMENT,
    title VARCHAR(255) NOT NULL,
    isbn VARCHAR(13) NULL,
    published_date DATE NULL,
    publisher_id INT NULL,
    PRIMARY KEY (book_id),
    CONSTRAINT fk_publisher FOREIGN KEY (publisher_id)
        REFERENCES publishers (publisher_id)
);

Подключение к базе данных из PHP

Сначала создаем файл 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().

Использование подхода на основе классов (ООП)

Чтобы использовать класс вместо функции для создания нового соединения с базой данных, нужно выполнить несколько шагов.

Во-первых, создайте новый файл с именем Connection.php и определите класс Connection:

<?php

require_once 'config.php';

class Connection
{
	public static function make($host, $db, $user, $password)
	{
		$dsn = "mysql:host=$host;dbname=$db;charset=UTF8";

		try {
			$options = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];

			return new PDO($dsn, $username, $password, $options);
		} catch (PDOException $e) {
			die($e->getMessage());
		}
	}
}

return Connection::make($host, $db, $user, $password);

Класс Connection имеет метод make(), который возвращает новый экземпляр PDO.

Во-вторых, используйте файл Connection.php в других файлах сценариев следующим образом:

<?php

$pdo = require 'Connection.php';
var_dump($pdo);

В этом руководстве вы узнали, как создать базу данных bookdb на сервере MySQL, и разработали повторно используемый скрипт для подключения к базе данных.

Статьи # # #