Взаимодействие PHP и MYSQL

14 сентября 2021

PHP обладает широким набором функций для работы со множествами СУБД, но одной из самых популярных систем управления данными является MySQL.

PHP 5 и более поздние версии могут работать с базой данных MySQL, используя:

Расширение MySQLi ("i" означает улучшенный).

PDO (объекты данных PHP).

В более ранних версиях PHP использовалось расширение MySQL. Однако это расширение было прекращено в 2012 году.

Для работы с СУБД MySQL существует объектно-ориентированный подход и процедурный.

Прежде чем мы сможем получить доступ к данным в базе данных MySQL, нам необходимо подключиться к серверу:

Пример (объектно-ориентированный подход)

<?php

$servername = "localhost";

$username = "username";

$password = "password";

// Создаем соединение

$conn = new mysqli($servername, $username, $password);

// Проверяем соединение

if ($conn->connect_error) {

die("Соединение не было установлено: " . $conn->connect_error);

}

echo "Соединение установлено";

?>

$ connect_error не работал до PHP 5.2.9 и 5.3.0. Если вам необходимо обеспечить совместимость с версиями PHP до 5.2.9 и 5.3.0, используйте вместо этого следующий код:

// Проверяем соединение

if (mysqli_connect_error ()) {

die ("Ошибка подключения к базе данных:". Mysqli_connect_error ());

}

Пример (процедурный подход):

<?php

$servername = "localhost";

$username = "username";

$password = "password";

// Create connection

$conn = mysqli_connect($servername, $username, $password);

// Создаем соединение

if (!$conn) {

die("Соединение не было установлено: " . mysqli_connect_error());

}

echo " Соединение установлено ";

?>

Соединение будет закрыто автоматически, когда скрипт завершится. Чтобы закрыть соединение раньше, используйте следующее:

Объектно-ориентированный подход:

$conn->close();

Процедурный подход:

mysqli_close($conn);

После того, как база данных и таблица созданы, мы можем начать добавлять в них данные.

Существует несколько правил синтаксиса, которым нужно следовать:

SQL-запрос должен быть заключен в кавычки в PHP.

Строковые значения внутри SQL-запроса должны быть заключены в кавычки.

Числовые значения не должны указываться.

Слово NULL нельзя заключать в кавычки.

Оператор INSERT INTO используется для добавления новых записей в таблицу MySQL:

INSERT INTO table_name (column1, column2, column3,...)

VALUES (value1, value2, value3,...)

Следующие примеры добавляют новую запись в таблицу «MyGuests».

Пример (Объектно-ориентированный подход):

<?php

$servername = "localhost";

$username = "username";

$password = "password";

$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {

die("Соединение не установлено: " . $conn->connect_error);

}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)

VALUES ('Алексей', 'Брагин', 'bragin@yandex.ru')";

if ($conn->query($sql) === TRUE) {

echo "Новая запись добавлена";

} else {

echo "Ошибка: " . $sql . "<br>" . $conn->error;

}

$conn->close();

?>

Пример (Процедурный подход):

<?php

$servername = "localhost";

$username = "username";

$password = "password";

$dbname = "myDB";

$conn = mysqli_connect($servername, $username, $password, $dbname);

if (!$conn) {

die("Соединение не установлено: " . mysqli_connect_error());

}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)

VALUES ('Алексей', 'Брагин', 'bragin@yandex.ru')";

if (mysqli_query($conn, $sql)) {

echo " Новая запись добавлена ";

} else {

echo "Ошибка: " . $sql . "<br>" . mysqli_error($conn);

}

mysqli_close($conn);

?>

Оператор SELECT используется для выбора данных из одной или нескольких таблиц:

SELECT column_name(s) FROM table_name

или мы можем использовать символ * для выбора ВСЕХ столбцов из таблицы:

SELECT * FROM table_name

В следующем примере выбираются столбцы id, firstname и lastname из таблицы MyGuests и отображаются на странице:

Пример (Объектно-ориентированный подход):

<?php

$servername = "localhost";

$username = "username";

$password = "password";

$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {

die("Соединение не установлено: " . $conn->connect_error);

}

$sql = "SELECT id, firstname, lastname FROM MyGuests";

$result = $conn->query($sql);

if ($result->num_rows > 0) {

while($row = $result->fetch_assoc()) {

echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";

}

} else {

echo "Ничего не найдено";

}

$conn->close();

?>

Сначала мы настраиваем SQL-запрос, который выбирает столбцы id, firstname и lastname из таблицы MyGuests. Следующая строка кода выполняет запрос и помещает полученные данные в переменную с именем $result. Затем функция num_rows() проверяет было ли возвращено больше нуля строк.

Если возвращается более нуля строк, функция fetch_assoc() помещает все результаты в ассоциативный массив, который мы можем просмотреть. В цикле while выводим результаты.

Пример (Процедурный подход)

<?php

$servername = "localhost";

$username = "username";

$password = "password";

$dbname = "myDB";

$conn = mysqli_connect($servername, $username, $password, $dbname);

if (!$conn) {

die("Соединение не установлено: " . mysqli_connect_error());

}

$sql = "SELECT id, firstname, lastname FROM MyGuests";

$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {

while($row = mysqli_fetch_assoc($result)) {

echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";

}

} else {

echo "Ничего не найдено";

}

mysqli_close($conn); ?>