English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP базовый учебник

Уровень продвинутых PHP-уроков

PHP & MySQL

PHP справочник

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

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

Вставка данных в таблицу MySQL数据库

Теперь, когда вы знаете, как создавать базы данных и таблицы в MySQL, в этом руководстве вы узнаете, как выполнять SQL-запросы для вставки записей в таблицу.

INSERT INTOиспользуется для вставки новой строки в таблицу базы данных.

Давайте используем оператор INSERT INTO с подходящими значениями для выполнения SQL-запроса, а затем выполним этот INSERT-запрос, передав его функции PHP mysqli_query(), чтобы вставить данные в таблицу. Вот пример, который вставляет данные через указаниеfirst_nameпунктlast_nameиemailзначения полей направлены вpersonsвставка новой строки в таблицу.

Пример: подход по методу процедур

<?php
$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', '[email protected]')";
if(mysqli_query($link, $sql)){
    echo "Запись вставлена успешно.";
}
    echo "Ошибка: Невозможно выполнить $sql." . mysqli_error($link);
}
 
//Закрытие соединения
mysqli_close($link);
?>

Пример:面向对象方式

<?php
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//Проверка соединения
if($mysqli === false){
    die("ERROR: Could not connect. " . $mysqli->connect_error);
}
 
//Попытка выполнения запроса на вставку
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Peter', 'Parker', '[email protected]')";
if($mysqli->query($sql) === true){
    echo "Запись вставлена успешно.";
}
    echo "Ошибка: Невозможно выполнить $sql." . $mysqli->error;
}
 
//Закрытие соединения
$mysqli->close();
?>

Пример: способ PDO

<?php
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    //Установить режим ошибок PDO на исключения
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("ERROR: Could not connect. " . $e->getMessage());
}
 
//Попытка выполнения запроса на вставку
try{
    $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Peter', 'Parker', '[email protected]')";    
    $pdo->exec($sql);
    echo "Запись вставлена успешно.";
} catch(PDOException $e){
    die("Ошибка: не удалось выполнить $sql. ". $e->getMessage());
}
 
//Закрытие соединения
unset($pdo);
?>

Если вы помнитесодержание предыдущей главыеслиidПоля помечены знаком AUTO_INCREMENT. Данный модификатор сообщает MySQL, что если значение не указано, то автоматически для этого поля будет присвоено значение, увеличенное на 1 по сравнению с предыдущим.

Вставка нескольких строк в таблицу

Вы также можете一次性 inserting multiple rows into the table through a single insert query. Для этого включите несколько списков значений столбцов в предложении INSERT INTO, где значения строк должны быть заключены в скобки и разделены запятыми.

Давайте вpersonsВ таблице добавьте несколько строк, как показано ниже:

Пример: подход по методу процедур

<?php
$link = mysqli_connect("localhost", "root", "", "demo");
 
//Проверка соединения
if($link === false){
    die("Ошибка: Не удалось подключиться. " . mysqli_connect_error());
}
 
//Попытка выполнения запроса на вставку
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES
            ('John', 'Rambo', '[email protected]'),
            ('Clark', 'Kent', '[email protected]'),
            ('John', 'Carter', '[email protected]'),
            ('Harry', 'Potter', '[email protected]')";
if(mysqli_query($link, $sql)){
    echo "Запись добавлена успешно.";
}
    echo "Ошибка: Невозможно выполнить $sql." . mysqli_error($link);
}
 
//Закрытие соединения
mysqli_close($link);
?>

Пример:面向对象方式

<?php
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//Проверка соединения
if($mysqli === false){
    die("ERROR: Could not connect. " . $mysqli->connect_error);
}
 
//Попытка выполнения запроса на вставку
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES
            ('John', 'Rambo', '[email protected]'),
            ('Clark', 'Kent', '[email protected]'),
            ('John', 'Carter', '[email protected]'),
            ('Harry', 'Potter', '[email protected]')";
if($mysqli->query($sql) === true){
    echo "Запись вставлена успешно.";
}
    echo "Ошибка: Невозможно выполнить $sql." . $mysqli->error;
}
 
//Закрытие соединения
$mysqli->close();
?>

Пример: способ PDO

<?php
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    //Установить режим ошибок PDO на исключения
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("Ошибка: Не удалось подключиться. " . $e->getMessage());
}
 
//Попытка выполнения запроса на вставку
try{
    $sql = "INSERT INTO persons (first_name, last_name, email) VALUES
            ('John', 'Rambo', '[email protected]'),
            ('Clark', 'Kent', '[email protected]'),
            ('John', 'Carter', '[email protected]'),
            ('Harry', 'Potter', '[email protected]')";   
    $pdo->exec($sql);
    echo "Запись вставлена успешно.";
} catch(PDOException $e){
    die("Ошибка: не удалось выполнить $sql. ". $e->getMessage());
}
 
//Закрытие соединения
unset($pdo);
?>

Теперь перейдите в phpMyAdmin (http://localhost/phpmyadmin/), и проверьтедемонстрацияв базе данныхперсоналаТаблица данных. Вы会发现IDзначения столбца черезIDзначение увеличивается на 1 автоматически.

Внимание: В SQL-запросе может быть любое количество отступов, но при условии, что ни один отступ не разрушает ключевые слова, значения, выражения и т.д.

Вставка данных из HTML-формы в базу данных

В предыдущем разделе мы изучили, как вставлять данные в базу данных из скрипта PHP. Теперь мы увидим, как вставлять данные в базу данных из HTML-формы. Давайте создадим HTML-форму, которую можно использовать для вставки новых записей вперсоналатаблицы.

Шаг 1: создание HTML-формы

Это простая HTML-форма, которая содержит три текстовых поля<input>полей и кнопки отправки.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Форма добавления записи</title>
</head>
<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">Адрес электронной почты:</label>
        <input type="text" name="email" id="emailAddress">
    </p>
    <input type="submit" value="Submit">
</form>
</html>
Проверьте, пожалуйста‹/›

Шаг 2: извлечение и вставка данных формы

В примере выше, когда пользователь нажимает кнопку отправки формы HTML, данные формы отправляются в файл "insert.php". Файл "insert.php" подключается к серверу базы данных MySQL, использует переменные PHP $_REQUEST для извлечения полей формы и в конечном итоге выполняет запрос на вставку для добавления записи. Вот полный код нашего файла "insert.php":

Пример: подход по методу процедур

<?php
$link = mysqli_connect("localhost", "root", "", "demo");
 
//Проверка соединения
if($link === false){
    die("ERROR: Could not connect. " . 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 "Запись добавлена успешно.";
}
    echo "Ошибка: Невозможно выполнить $sql." . mysqli_error($link);
}
 
//Закрытие соединения
mysqli_close($link);
?>

Пример:面向对象方式

<?php
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//Проверка соединения
if($mysqli === false){
    die("Ошибка: Невозможно подключиться. " . $mysqli->connect_error);
}
 
//Для безопасности, экранирование ввода пользователя
$first_name = $mysqli->real_escape_string($_REQUEST['first_name']);
$last_name = $mysqli->real_escape_string($_REQUEST['last_name']);
$email = $mysqli->real_escape_string($_REQUEST['email']);
 
//Попытка выполнения запроса на вставку
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('$first_name', '$last_name', '$email')";
if($mysqli->query($sql) === true){
    echo "Запись вставлена успешно.";
}
    echo "Ошибка: Невозможно выполнить $sql." . $mysqli->error;
}
 
//Закрытие соединения
$mysqli->close();
?>

Пример: способ PDO

<?php
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    //Установить режим ошибок PDO на исключения
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("Ошибка: не удалось подключиться. ". $e->getMessage());
}
 
//Попытка выполнения запроса на вставку
try{
    //Создать подготовленный запрос
    $sql = "INSERT INTO persons (first_name, last_name, email) VALUES (:first_name, :last_name, :email)";
    $stmt = $pdo->prepare($sql);
    
    //Привязать параметры к запросу
    $stmt->bindParam(':first_name', $_REQUEST['first_name']);
    $stmt->bindParam(':last_name', $_REQUEST['last_name']);
    $stmt->bindParam(':email', $_REQUEST['email']);
    
    //Исп�行ровать подготовленный запрос
    $stmt->execute();
    echo "Запись вставлена успешно.";
} catch(PDOException $e){
    die("Ошибка: не удалось выполнить $sql. ". $e->getMessage());
}
 
// Закрыть соединение
unset($pdo);
?>

В следующей главе мы расширяем этот пример вставки запроса и реализуемПодготовленные запросыДля进一步提高 безопасности и производительности, что позволяет дальнейшее развитие.

Внимание:функция mysqli_real_escape_string() эскапирует специальные символы в строке и создает законный SQL-строку для предотвращенияSQL-инъекцииБезопасность.

Это очень базовый пример вставки данных из формы в таблицу базы данных MySQL. Вы можете расширить этот пример, сделав его более интерактивным, добавив проверку ввода пользователей перед вставкой данных в таблицу базы данных. См. такжеВалидация форм PHPруководство, чтобы узнать больше о том, как использовать PHP для очистки и проверки ввода пользователей.