Взаимодействие PHP и MYSQL
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); ?>