MySQLi (MySQL Improved) — расширение MySQL, которое добавляет новые функции в интерфейс базы данных MySQL. 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')";
Мы использовали фигурные скобки вместо простых скобок. Так как это некорректно, это привело к тому, что наш скрипт выдал синтаксическую ошибку.