English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве вы узнаете, как использовать PHP для вставки записей в таблицу 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(); ?>
<?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(); ?>
<?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-запросе может быть любое количество отступов, но при условии, что ни один отступ не разрушает ключевые слова, значения, выражения и т.д.
В предыдущем разделе мы изучили, как вставлять данные в базу данных из скрипта PHP. Теперь мы увидим, как вставлять данные в базу данных из HTML-формы. Давайте создадим 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>Проверьте, пожалуйста‹/›
В примере выше, когда пользователь нажимает кнопку отправки формы 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(); ?>
<?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 для очистки и проверки ввода пользователей.