PHP MySQL запись в таблицу

В php предусмотрена поддержка работы с базами данных MySQL. Встроенные функции, специально разработанные для работы с MySQL, разрешают эффективно записывать и считывать данные, выполнять нужные запросы, исправлять ошибки. Сценарий подключения к БД, который делает запрос и выводит результат, будет заключаться в нескольких строках. Для начала работы БД (MySQL) не требуется дополнительные установки и настройки, все уже заключено и доступно в самой php.

Но для работы с полным функционалом все-таки необходимо воспользоваться php расширением mysqli (MySQL Improved) или PDO (PHP Data Objects), которые дополняют язык полной поддержкой БД (баз данных). Они поддерживают все возможности актуальных версий MySQL.

Расширение mysqli для работы с БД через php

Воспользуемся для примера расширением mysqli.

Процесс работы с базой данных

Ход работы с БД в сценарии php заключаются из нескольких этапов:

  1. Установить связь с сервером БД, сделав передачу требуемых параметров: адрес, логин, пароль.
  2. Проверить успешное подключение: доступ к БД, правильность пароля и логина, и т.п.
  3. Составить верный запрос SQL (такой как чтение или запись данных в таблицу).
  4. Удостовериться в выполнении успешного запроса.
  5. Извлечь результат с базы данных в форме массива записей.
  6. Применить полученные данные для своего сценария.

Рассмотрим их по отдельности.

Создание соединения с MySQL

Для работы с записями в MySQL сначала необходимо создать соединение с сервером посредством php. Это действие выполняется при помощи функции mysqli_connect(), которая выдает результат в виде ресурса соединения. Этот ресурс в последствии будет использоваться во всех последующих операциях в БД (MySQL).

Чтобы произвести соединение к серверу, нужно обладать тремя основными параметрами: адрес самого сервера БД, логин, пароль.

При стандартной установке или использовании OpenServer: адрес сервера — localhost, логин — root. А вот пароль при стандартной установке задается в самом мастере установки (на определенном шаге), на OpenServer паролем служит пустая строка.

Вид функции в строке php кода:

<!--php-->
mysqli_connect(<адрес сервера БД>, <логин>, <пароль>, <имя БД>);

Проверка подключения к базе данных

После соединения с БД необходимо проверить его успешность. Необходимость в проверке заключается в исключении ошибки подключения к БД. Неверные настройки с большой нагрузкой или неправильные параметры подключения не дадут MySQL устанавливать новые подключения. В свою очередь это послужит к неосуществимости соединения. Поэтому вебмастеру необходимо проверить соединение с сервером, чтобы была возможность дальнейшей работы с базой данных.

Подключение к MySQL выполняется единожды в сценарии, и после применяется в каждом запросе к БД.

Функция mysqli_connect() будет выводить значение — ресурс. При неудачном соединении с MySQL, функция mysqli_connect() возвратит логическое значение false (ложь). Не лишней, при создании каждой новой БД, будет проверка выполнения и сравнивания этой функции с ложью.

Пример кода соединения и проверки на ошибки с MySQL в среде php:

<!--php-->
<?php
$link = mysqli_connect("localhost", "root", "password");

if ($link == false){
    echo "Ошибка: не установлено соединение с MySQL " . mysqli_connect_error();
}
else {
    echo "Соединение успешно установлено";
}

У функции mysqli_connect_error() заложено возвращение описания последней ошибки в MySQL.

Установка необходимой кодировки

После подключения соединения в первую очередь необходимо указать кодировку для использования в обмене данных с MySQL. В противном случае взамен записей (на кириллице) будет получен ответ из: ‘?????????’.

Чтобы настроить кодировку, нужно вызвать функцию mysqli_set_charset($con, "utf8");

Запросы SQL

С установкой соединения и кодировки уже можно выполнять необходимые запросы SQL. Их возможно выполнять как из визуального (консольного) интерфейса клиента MySQL, так и из php сценария. С этим справятся определенные встроенные функции языка.

SQL запросы можно разделить на две основные группы:

  • изменение информации (INSERT, UPDATE, DELETE);
  • чтение (SELECT).

Когда запросы на чтение информации выполняются из среды php, то возвращается спец ресурс результата (при успехе). Он, в зависимости от необходимости, может быть преобразован в двумерный (две и более записи) или ассоциативный (одна запись) массив. А при модификации (изменении) возвращается результат выполнения — ошибка или успех.

Добавление записи в таблицу

Чтобы добавить новые записи в таблицу используется оператор INSERT INTO.

Необходимо скомпоновать корректный запрос SQL для вставки записи и осуществить его при помощи передачи функцией mysqli_query(), которая и добавит эти данные в таблицу.

<!--php-->
<?php
$link = mysqli_connect("localhost", "root", "password");

$sql = 'INSERT INTO yourtable1 SET name = "Значение 1"';
$result = mysqli_query($link, $sql);

if ($result == false) {
    echo "Ошибка выполнения запроса";
}

Как видно на примере, сначала функции mysqli_query() указывается ресурс подключения (mysqli_connect()), а после передается строка запроса ($sql).

Когда поступают запросы изменения данных, то результат будет в виде логического значения (false или true). Если результат false — запрос не выполнен. Выводом ошибки с описанием занимается функция mysqli_error($link).

Идентификатор добавления записи

Использование записей из одной таблицы в другой позволяет создавать массивы данных с необходимым их количеством.

Если у вас есть часть записей, которые хранятся в одной таблице (yourtable2), а другая часть хранится во второй (yourtable1). Для того, чтобы сослаться между записями, в них необходимо указывать идентификаторы. Функция определения айди — mysqli_insert_id(). Работает она с аргументом — ресурсом соединения, возвращая идентификатор последних добавленных записей.

Чтобы добавить запись, состоящую из двух отдельных, находящихся в разных таблицах, нужно составить такой код php:

<!--php-->
<?php
$link = mysqli_connect("localhost", "root", "password");

if ($link == false){
    echo "Ошибка: не установлено соединение с MySQL " . mysqli_connect_error();
}
else {
    $sql = 'INSERT INTO yourtable1 SET name = "Время"';
    $result = mysqli_query($link, $sql);

    if ($result == false) {
        echo "Ошибка выполнения запроса";
    }
    else {
        $yourtable1_id = mysqli_insert_id($link);

        $sql = 'INSERT INTO yourtable2 SET yourtable1_id = ' . $yt1value_id . ', day = "2021-10-25", rise = 7:37, set = 17:46';

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

        if ($result == false) {
        echo "Ошибка выполнения запроса";
        }
    }
}

Чтение записей MySQL

После записи в базу данных возникает другая, не менее важная операция — чтение этих записей из таблиц. Запрос SQL для получения данных из таблицы, использующий SELECT, также выполняется при помощи функции mysqli_query().

Пример вывода всех существующих записей таблицы yourtable1:

<!--php-->
<?php

$sql = 'SELECT id, name FROM yourtable1';

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

while ($row = mysqli_fetch_array($result)) {
    echo("День: " . $row['name'] . "; Идентификатор: . " . $row['id'] . "<br>");
}

Результат выполнения mysqli_query() из примера сохраняется в переменной $result. Нужно понимать, что эта переменная хранит не данные, а ссылку результатов запроса.

За получение самих данных (записей) отвечает функция mysqli_fetch_array(), которой необходимо указать на ссылку параметром. После задания при вызове этой функции будет возвращаться последующая запись ассоциативным массивом.

Использование цикла while необходимо для «прочесывания» всех записей из массива. Теперь, чтобы узнать значение поля по каждой отдельной записи можно обращением по ключу ассоциативного массива.

Получение записей в двумерном массиве

В некоторых задачах удобнее при вызове функции mysqli_fetch_array выводить не следующие записи по порядку, а вывести все сразу. В php для этого нужно воспользоваться функцией mysqli_fetch_all($res, MYSQLI_ASSOC), которая возвратит двумерный массив по результату запроса с всеми записями.

Вид кода с показом всех присутствующих дат с использованием этой функции:

<!--php-->
<?php

$sql = 'SELECT id, name FROM yourtable1';
$result = mysqli_query($link, $sql);

$rows = mysqli_fetch_all($result, MYSQLI_ASSOC)

foreach ($rows as $row) {
    echo"День: " . $row['name'] . "; Идентификатор: . " . $row['id'] . "<br>";
}

Узнаем общее количество записей

Важной информацией может быть количество всех записей, которые выдаст исполненный запрос SQL. Она может быть использована, например, при построении навигации по страницам, или в общем — для понимания объема данных. Функция, которой предусмотрен показ числа записей — mysqli_num_rows(). Ей для работы необходима ссылка результата запроса.

Заключение

Добавление записей в таблицы MySQL — умение, которое может понадобиться как начинающим программистам, так и учащимся разработчикам. В этой статье были рассмотрены основные способы работы с записями посредством php, используя MySQLi, с примерами.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *