Вставка данных в базу данных MySQL
В этом уроке вы узнаете, как вставлять записи в таблицу MySQL с помощью PHP.
Вставка данных в таблицу базы данных MySQL
После создания таблицы, следующим шагом будет ввод данных в таблицу. Чтобы ввести данные в таблицу, мы должны соблюдать определенные правила:
- Если значение, которое нужно вставить, является строкой, мы должны заключить ее в кавычки.
- Числовое значение нельзя заключать в кавычки.
NULL
нельзя заключать в кавычки.- Если столбец в таблице имеет параметр
AUTO_INCREMENT
, то нам не нужно вставлять данные в этот столбец, т.к. данные будут вставляются автоматически.
Для вставки новых строк в таблицу базы данных используется оператор INSERT INTO
.
VALUES (value1, value2, value3,...)
Давайте сделаем SQL-запрос, используя оператор INSERT INTO
с соответствующими значениями, после чего мы передадим его функции PHP mysqli_query()
для вставки данных в таблицу.
Следующий пример вставляет новую строку в таблицу persons, указывая значения для полей first_name, last_name и email в трех различных версиях: с использованием синтаксиса объектно-ориентированной процедуры MySQLi, процедурный MySQLi и процедуры PDO.
<?php
/* Попытка подключения к серверу MySQL. Предполагая, что вы используете MySQL
сервер с настройкой по умолчанию (пользователь root без пароля) */
$link = mysqli_connect("localhost", "root", "", "demo");
// Проверка подключения
if($link === false){
die("ОШИБКА: не удалось подключиться. " . mysqli_connect_error());
}
// Попытка выполнения запроса вставки
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Peter', 'Parker', 'peterparker@mail.com')";
if(mysqli_query($link, $sql)){
echo "Записи успешно вставлены.";
} else{
echo "ERROR: Не удалось выполнить $sql. " . mysqli_error($link);
}
// Закрыть соединение
mysqli_close($link);
?>
Примечание: Если столбец — это AUTO_INCREMENT (например, столбец «id»), то его не нужно указывать в запросе SQL. Этот модификатор сообщает MySQL автоматически присвоить значение этому полю.
Вставка нескольких строк в таблицу
Вы также можете вставить сразу несколько строк в таблицу с помощью одного запроса на вставку. Для этого включите в оператор INSERT INTO
несколько списков значений столбцов, где значения столбцов для каждой строки должны быть заключены в круглые скобки и разделены запятыми.
В следующем примере вставим еще несколько строк в таблицу persons:
<?php
/* Попытка подключения к серверу MySQL. Предполагая, что вы используете MySQL
сервер с настройкой по умолчанию (пользователь root без пароля) */
$link = mysqli_connect("localhost", "root", "", "demo");
// Проверка подключения
if($link === false){
die("ERROR: Ошибка подключения. " . mysqli_connect_error());
}
// Попытка выполнения запроса вставки
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES
('John', 'Rambo', 'johnrambo@mail.com'),
('Clark', 'Kent', 'clarkkent@mail.com'),
('John', 'Carter', 'johncarter@mail.com'),
('Harry', 'Potter', 'harrypotter@mail.com')";
if(mysqli_query($link, $sql)){
echo "Записи успешно вставлены.";
} else{
echo "ERROR: Не удалось выполнить $sql. " . mysqli_error($link);
}
// Закрыть соединение
mysqli_close($link);
?>
Теперь перейдите в phpMyAdmin и проверьте данные таблицы persons внутри базы данных. Вы обнаружите, что значение столбца id присваивается автоматически путем увеличения значения предыдущего идентификатора на 1.
В MySQL каждая запись представляет собой полный запрос INSERT INTO
, разделенный точкой с запятой.
Чтобы облегчить чтение синтаксиса, мы, в отличие от предыдущего примера, разбиваем его на отдельные запросы и добавляем их друг к другу с помощью оператора (.=)
:
Пример
Скопировать
$sql = "INSERT INTO Users (name, email)
VALUES ('James Bond', 'bond@mail.com');";
$sql .= "INSERT INTO Users (name, email)
VALUES ('John Wick', 'wick@mail.com');";
$sql .= "INSERT INTO Users (name, email)
VALUES ('Ethan Hunt', 'hunt@mail.com')";
Поскольку точка с запятой является частью SQL-запроса, а не оператором PHP, мы добавляем ее в кавычки запроса.
Вставка данных в БД из HTML-формы
В предыдущем разделе мы узнали, как вставлять данные в базу данных из сценария PHP. Теперь посмотрим, как мы можем вставить данные в базу данных, полученную из HTML-формы. Давайте создадим HTML-форму, которую можно использовать для вставки новых записей в таблицу persons.
Создадим простую HTML-форма с тремя текстовыми <input> полями и кнопкой отправки:
Пример
Скопировать<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Add Record Form</title>
</head>
<body>
<form action="insert.php" method="post">
<p>
<label for="firstName">Имя:</label>
<input type="text" name="first_name" id="firstName">
</p>
<p>
<label for="lastName">Фамилия:</label>
<input type="text" name="last_name" id="lastName">
</p>
<p>
<label for="emailAddress">Email:</label>
<input type="text" name="email" id="emailAddress">
</p>
<input type="submit" value="Отправить">
</form>
</body>
</html>
Получение и вставка данных формы
Когда пользователь нажимает кнопку отправки HTML-формы, в приведенном выше примере данные формы отправляются в файл-обработчик PHP 'insert.php'. Файл 'insert.php' подключается к серверу базы данных MySQL, извлекает поля форм с использованием переменной PHP $_REQUEST
и, наконец, выполняет запрос на вставку записей в БД.
Ниже приведен полный код нашего файла insert.php:
<?php
/* Попытка подключения к серверу MySQL. Предполагая, что вы используете MySQL
сервер с настройкой по умолчанию (пользователь root без пароля) */
$link = mysqli_connect("localhost", "root", "", "demo");
// Проверьте подключение
if($link === false){
die("ERROR: Нет подключения. " . mysqli_connect_error());
}
// экранирует специальные символы в строке
$first_name = mysqli_real_escape_string($link, $_REQUEST['first_name']);
$last_name = mysqli_real_escape_string($link, $_REQUEST['last_name']);
$email = mysqli_real_escape_string($link, $_REQUEST['email']);
// Попытка выполнения запроса вставки
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('$first_name', '$last_name', '$email')";
if(mysqli_query($link, $sql)){
echo "Записи успешно добавлены.";
} else{
echo "ERROR: Не удалось выполнить $sql. " . mysqli_error($link);
}
// Закрыть соединение
mysqli_close($link);
?>
Примечание: Функция mysqli_real_escape_string()
экранирует специальные символы в строке и создает допустимую строку SQL для защиты от атаки, при которой злоумышленник может внедрить или выполнить вредоносный код SQL.
Это простой пример вставки данных формы в таблицу базы данных MySQL. Вы можете расширить этот пример и сделать его более интерактивным, добавив проверки для пользовательского ввода перед вставкой его в таблицы базы данных. Ознакомьтесь с руководством по проверке форм PHP, чтобы узнать больше о валидации и проверке вводимых пользователем данных с помощью PHP.