Использование MySQLi для работы с БД

MySQLi (MySQL Improved) — расширение MySQL, которое добавляет новые функции в интерфейс базы данных MySQL. MySQLi может быть как процедурным, так и объектно-ориентированным.

MySQLi
MySQLi

Подключение к БД

Внимание! Оригинальные функции mysql_ устарели и не рекомендуются к использованию, так как они небезопасны и больше не поддерживаются и не разрабатываются.

Выполните следующие действия, чтобы использовать MySQLi для подключения PHP-скрипта к MySQL:

1. Перейдите в «Диспетчер файлов» (File Manager)

2. Переходим в public_html. Почти везде используется такая структура папок.

3. Создайте новый файл, щелкнув на соответствующий значок в верхнем меню. Вы можете нажать правой кнопкой мыши и выбрать «Новый файл«.

4. Сохраните файл как databaseconnect.php. Вы можете заменить имя на любое другое, просто убедитесь, что оно использует .php в качестве расширения.

5. Двойным щелчком мыши откройте файл и скопируйте в него строки кода, которые ниже. Измените первые четыре значения ниже <?php с учетными данными, которые вы сохранили ранее.

<?php
$servername = "localhost";
 // имя хоста
$database = "databasename";
 // имя БД
$username = "username";
 // имя пользователя БД
$password = "password";
 // пароль, созданный для пользователя БД
// создание соединения
$conn = mysqli_connect($servername, $username, $password, $database);
// проверка соединения
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
mysqli_close($conn);

Основным методом, используемым в этом скрипте, является mysqli_connect(). Это внутренняя PHP-функция для установления нового соединения с сервером MySQL.

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

Обычно нам нужны четыре из них, чтобы установить правильное подключение к базе данных: $servername, $database, $username и $password. В коде мы устанавливаем данные нашей базы данных в качестве значений для этих переменных, чтобы они могли быть переданы в функцию.

Если соединение не удается, выполняется функция die(). Это, по сути, «убивает» (прекращает работу) наш скрипт и дает нам сообщение об ошибке соединения, которое мы установили. По умолчанию, ошибка соединения MySQL скажет, что соединение не удалось, а затем появится точное сообщение об ошибке, описывающее проблему.

С другой стороны, если подключение MySQL будет успешным, то вместо этого код напечатает «Connected successful» (рус. — соединения успешно).

Последняя часть кода — mysqli_close, которая просто закроет соединение с базой данных вручную. Если не указать, то соединения MySQL закроются сами по себе после завершения работы скрипта.

Вставка данных

Сначала вам нужно установить соединение с базой данных. После этого можно приступать к выполнению MySQL-запроса INSERT. Вот полный пример PHP-кода с основными методами подключения и вставки:

<?php
$servername = "mysql.hostinger.co.uk";
$database = "u266072517_name";
$username = "u266072517_user";
$password = "buystuffpwd";

// Create connection

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

// Check connection

if (!$conn) {
      die("Connection failed: " . mysqli_connect_error());
}
 
echo "Connected successfully";
 
$sql = "INSERT INTO Students (name, lastname, email) VALUES ('Test', 'Testing', 'Testing@tesing.com')";
if (mysqli_query($conn, $sql)) {
      echo "New record created successfully";
} else {
      echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);

Первая часть кода (строки 3-18) предназначена для фактического подключения к базе данных. Я не буду повторять эту часть снова, однако, если вы хотите знать, что означает каждая строка кода, то вам нужно вернуться в начало этого руководства.

Итак, начнем со строки 19:

$sql = "INSERT INTO Students (name, lastname, email) VALUES ('Test', 'Testing', 'Testing@tesing.com')";

Это самая важная строка PHP-кода, поскольку она вставляет данные в базу данных MySQL. INSERT INTO — это оператор, который добавляет данные в указанную таблицу БД. В этом примере мы добавляем данные в таблицу Students.

Далее, между скобками, у нас есть имена столбцов таблицы, в которые мы хотим добавить значения: (name, lastname, email). Данные будут добавлены в указанном порядке. Если мы напишем (email, lastname, name), то значения будут добавлены в неправильном порядке.

Следующая часть — это выражение VALUES. Здесь мы указываем наши значения для вставки в ранее указанные столбцы. Таким образом, каждый столбец представляет определенное значение. Например, в нашем случае это будет так:

name = Test, lastname = Testing, email = Testing@testing.com

Еще стоит упомянуть, что мы только что выполнили SQL-запрос с использованием кода PHP. SQL-запросы должны быть заключены в кавычки. В нашем примере все, что находится между кавычками и написано после $sql =, является запросом SQL.

Следующая часть кода (20 — 22 строки) проверяет успешность нашего запроса:

if (mysqli_query($conn, $sql)) {
     echo "New record created successfully";
}

Программа просто выводит сообщение об успешном выполнении запроса, который мы выполнили.

А в последней части (22 — 24 строки) выводится другое сообщение в случае, если наш запрос не был успешным:

else {
     echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

Программа выдаст нам SQL-сообщение об ошибке в случае, если что-то не так.

Решение проблем

Если отображается сообщение об ошибке MySQLi, мы можем использовать следующие методы, чтобы исправить это. Например, давайте сделаем одну синтаксическую ошибку в нашем коде, если мы это сделаем, мы увидим что-то похожее на это:

Connect successfully
Error: INSERT INTO students {name, lastname, email} VALUES ('Test', 'Testing', 'Testing@testing.com')
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{name, lastname, email} VALUES ('Test', 'Testing', 'Test@testingcom')' at line 1"

Как видите, первая часть кода в порядке, соединение установлено успешно, но наш SQL-запрос привел к ошибке.

"Error: INSERT INTO Students {name, lastname, email} VALUES ('Thom', 'Vial', 'thom.v@some.com') You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{name, lastname, email} VALUES ('Thom', 'Vial', 'thom.v@some.com')' at line 1"

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

$sql = "INSERT INTO Students {name, lastname, email} VALUES ('Thom', 'Vial', 'thom.v@some.com')";

Мы использовали фигурные скобки вместо простых скобок. Так как это некорректно, это привело к тому, что наш скрипт выдал синтаксическую ошибку.

Опубликовано 5 февраля 2023 в 14:12
Обновлено 9 января 2024 в 14:11
Категория: Блог
Теги: