Основы работы с PHP MySQL

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

  • читать и записывать данные;
  • выполнять разные запросы;
  • обрабатывать ошибки.

Сценарий, подключаемый к базе данных включает несколько строк. Для работы с БД не придется ничего дополнительно устанавливать. Все необходимое уже идет со стандартной постановкой PHP.

MySQLI – что это?

MySQLImproved – специальное расширение PHP, добавляющееполнуюподдержку БД MySQL в язык. Такое расширение поддерживает многие возможности современных версий баз данных MySQL.

Работа с базой данных. Пошагово

Классический процесс работы с MySQL в PHP состоит из следующих этапов:

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

Соединение с MySQL. Функция mysqliconnect

Перед тем, как начать работать с данными внутри БД, необходимо соединиться с сервером СУБД. За этот процесс отвечает функция mysqli_connect(). Она возвращает результат – ресурс соединения. Этот ресурс применяется для всех последующих операций с базой данных.

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

Если вы придерживались стандартной инструкции по установке БД MySQL или используете OpenServer, то логином будет root, адресом – localhost. При самостоятельной установке MySQL пароль вы ранее создавали на одном из этапов установки, а при использовании OpenServer паролем будет пустая строка‘’.

Приведем базовый синтаксис mysqli_connect():

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

Проверка соединения

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

Удобно то, что соединение с БД устанавливается только раз, после чего постоянно используется в запросах к MySQL. Результатом выполнения функции mysqli_connect() станет значение специального типа – ресурс.
В том случае, если подключение будет неудачным, то mysqli_connect() вернет логическое значение типа «ложь» — false.

Внимание! В идеале всегда проверять значение результата выполнения данной функции и сравнивать его с ложью.

Соединение с БД и проверка на ошибки:

<?php
$link = mysqli_connect(«localhost», «root», «»);

if ($link == false){
print(«Ошибка: Невозможно подключиться к MySQL » . mysqli_connect_error());
}
else {
print(«Соединение установлено успешно»);
}

Функция mysqli_connect_error() возвращает текстовое описание последней ошибки базы данных.

Установка кодировки

После того, как вы убедитесь в успешности соединения нужно задать кодировку, которая будет использоваться во время обмена данных с MySQL. Если проигнорировать этот этап, то вместо записей со значениями на кириллице, вы рискуете получить последовательность из знаков вопроса:

‘?????????????????’.

Сразу после успешного соединения нужно вызывать следующую функцию:

mysqli_set_charset($con, «utf8»);

Выполнение запросов

После первых двух этапов, можно приступить к выполнению первых SQL-запросов. Их можно выполнять через визуальный или консольный интерфейс MySQL-клиента.

Такие же запросы можно отправлять и из PHP-сценария без изменений. В этом помогут несколько встроенных функций PHP.

Виды запросов SQL

Стоит выделять 2 группы SQL-запросов:

  1. (SELECT) – Чтение информации.
  2. (UPDATE, INSERT, DELETE) – Модификация.

При выполнении запросов из PHP среды, запросы из второй группы возвращают лишь результат их исполнения: ошибку или успех.

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

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

Рассмотрим на примере дневника наблюдений за погодой. Приступим к заполнению таблиц данными. В первую очередь нужно добавить в таблицу cities хотя бы один город.

Для добавления новых записей в таблицу БД применяется выражение INSERT INTO.

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

<?php
$link = mysqli_connect(«localhost», «root», «»);

$sql = ‘INSERT INTO cities SET name = «Санкт-Петербург»‘;
$result = mysqli_query($link, $sql);

if ($result == false) {
print(«Произошла ошибка при выполнении запроса»);
}

Важно! Первым параметром дляmysqli_query() передается ресурс подключения от mysqli_connect(), а вторым параметром следует строка с запросом SQL.

При запросах на изменение данных результатом выполнения станет логическое значение – fals или true.
Для получения строки с ошибкой отвечает функция mysqli_error($link).

Получение идентификатора добавленной записи. Функция insert id

Следующий этап – добавление погодной записи для другого города. Погодные записи хранятся в таблице weather_log. Однако, чтобы сослаться на город, нужно знать идентификатор записи из таблицы cities. На помощь приходит функция mysqli_insert_id(), которая принимает единственный аргумент – ресурс соединения, тогда как возвращает идентификатор записи, которая была добавлена последней.

Теперь можно добавить погодную запись. Обратите внимание, как будет выглядеть пример с подключением к Бди добавлением 2-х новых записей:

<?php
$link = mysqli_connect(«localhost», «root», «»);

if ($link == false){
print(«Ошибка: Невозможно подключиться к MySQL » . mysqli_connect_error());
}
else {
$sql = ‘INSERT INTO cities SET name = «Санкт-Петербург»‘;
$result = mysqli_query($link, $sql);

if ($result == false) {
print(«Произошла ошибка при выполнении запроса»);
}
else {
$city_id = mysqli_insert_id($link);

$sql = ‘INSERT INTO weather_log SET city_id = ‘ .$city_id .’, day = «2017-09-03», temperature = 10, cloud = 1′;

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

if ($result == false) {
print(«Произошла ошибка при выполнении запроса»);
}
}
}

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

Еще одна распространенная операция в работе с БД на PHP – получение записей из таблиц, а именно запросы типа SELECT.

Прежде всего, нужно составить SQL-запрос, который бы использовал SELECT выражение. Дальше выполним данный запрос посредством функции mysqli_query(). Так вы получите данные из таблицы.

Пример того, как вывести все существующие города из таблицы:

<?php

$sql = ‘SELECT id, name FROM cities’;

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

while ($row = mysqli_fetch_array($result)) {
print(«Город: » . $row[‘name’] .»; Идентификатор: . » . $row[‘id’] .»<br>»);
}

В приведенном выше примере результат выполнения функции mysqli_query() сохранен в переменной $result.

Внимание! В этой переменной находятся не данные, взятые из таблицы, а специальный тип данных – ссылка на результат запроса.

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

Теперь каждый последующий вызов mysqli_fetch_array() будет возвращать следующую запись из всего набора в виде ассоциативного массива.

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

Способ получения всех записей в виде двумерного массива

Для этой цели нужно воспользоваться функцией mysqli_fetch_all($res, MYSQLI_ASSOC), которая вернет двумерный массив со всеми записями из последнего запроса.

Пример:

<?php

$sql = ‘SELECT id, name FROM cities’;
$result = mysqli_query($link, $sql);

$rows = mysqli_fetch_all($result, MYSQLI_ASSOC)

foreach ($rowsas $row) {
print(«Город: » . $row[‘name’] .»; Идентификатор: . » . $row[‘id’] .»<br>»);
}

Как узнать количество записей

Может возникнуть необходимость в том, чтобы посчитать какое количество записей вернет SQL запрос. Это поможет при организации постраничной навигации или в качестве информации.

Количество записей поможет узнать функция mysqli_num_rows(), которой стоит передать ссылку на результат запроса.

Добавить комментарий

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