mysqli_connect: соединение с MySQL

Перед началом работы с базой данных необходимо открыть соединение с сервером СУБД. Для этого используется функция mysqli_connect(), она вернет ресурс соединения, который будет использоваться в дальнейшем для работы с MySQL. Базовый синтаксис функции mysqli_connect():

mysqli_connect(<адрес сервера>, <имя пользователя>, <пароль>, <имя базы данных>);

Установка соединения с БД

$con = mysqli_connect('localhost', 'user', 'pas', 'my_db_name');

Проверка установки соединения с БД

Перед продолжением работы, необходимо проверить подключение к БД. Если подключение не удалось, то функция mysqli_connect() вернет false.

$con = mysqli_connect('localhost', 'user', 'pas', 'my_db_name');
if ($con == false){
    echo "Ошибка: Невозможно подключиться к MySQL " . mysqli_connect_error();
}
else {
    echo "Соединение установлено успешно";
}

Соединение с БД устанавливается один раз за сценарий и используеться при все запросах к БД.

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

После установки соединения, желательно, явно указать кодировку обмена данными с БД. Сделать это можно при помощи функции mysqli_set_charset(). Укажем кодировка utf8:

mysqli_set_charset($con, 'utf8');

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

Подготовительный этап закончен, теперь можно приступить к работе с данными БД. Для выполнения запроса используеться функция mysqli_query(). При запросах на изменение данных ( INSERT, UPDATE) результатом выполнения функции будет логическое значение true или false.

INSERT. Запрос на добавление записи

Рассмотрим простой запрос на добавление записи с несколькими значениями:

$sql = 'INSERT INTO `user` SET `name` = "Александр", `surname` = "Хмельницкий"';
$result = mysqli_query($con, $sql);
if ($result == false) {
    echo 'Произошла ошибка при выполнении запроса';
} else {
    echo 'Запись успешно добавлена';
}

mysqli_insert_id: получить id добавленой записи

Чтобы получить id добавленой записи и использовать в дальнейшем существует функция mysqli_insert_id().

Пример. Добавим новую запись в БД и запишем данные в связанную таблицу:

$sql = 'INSERT INTO `user` SET `name` = "Иван", `surname` = "Петров"';
$result = mysqli_query($con, $sql);
if ($result == false) {
    echo 'Произошла ошибка при выполнении запроса';
} else {
    $userId = mysqli_insert_id($con);
    $sql = 'INSERT INTO user_data SET `user_id` = ' . $userId . ', date = "' . time() . '"';
    $result = mysqli_query($con, $sql);
    if ($result == false) {
        echo 'Произошла ошибка при выполнении запроса';
    }
}

UPDATE. Запрос на обновление данных

Обновим одну запись:

$sql = 'UPDATE `user` SET `name` = "Саша" WHERE `id` = "1"';
$result = mysqli_query($con, $sql);
if ($result == false) {
    echo 'Произошла ошибка при выполнении запроса';
}

Обновим все записи:

$sql = 'UPDATE `user` SET `name` = "Саша", `surname` = "Иванов"';
$result = mysqli_query($con, $sql);
if ($result == false) {
    echo 'Произошла ошибка при выполнении запроса';
}

SELECT. Запрос на выборку данных

Выберем одну запись

mysqli_fetch_row() - выбирает одну запись и помещает ее в массив:

$sql = 'SELECT `name`, `surname` FROM `user` WHERE `id` = "1"';
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_row($result);
echo 'Имя: ' . $row[0] . '; Фамилия: . ' . $row[1] . '<br />';

mysqli_fetch_assoc() - выбирает одну запись и помещает ее в ассоциативный массив:

$sql = 'SELECT `name`, `surname` FROM `user` WHERE `id` = "1"';
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_assoc($result);
echo 'Имя: ' . $row['name'] . '; Фамилия: . ' . $row['surname'] . '<br />';

Выберем несколько записей

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

$sql = 'SELECT `id`, `name`, `surname` FROM `user`';
$result = mysqli_query($con, $sql);
while ($row = mysqli_fetch_array($result)) {
    echo 'Имя: ' . $row['name'] . '; Фамилия: . ' . $row['surname'] . '; ID: ' . $row['id'] . '<br />';
}

mysqli_fetch_all() - вернет все записи удовлетворяющие условию сразу

$sql = 'SELECT `id`, `name` FROM `user`';
$result = mysqli_query($con, $sql);
$rows = mysqli_fetch_all($result, MYSQLI_ASSOC);
foreach ($rows as $row) {
    echo 'ID: ' . $row['id'] . '; Имя: ' . $row['name'] . '<br />';
}