В этом уроке вы узнаете, как вставить новую строку в таблицу из PHP с помощью PDO.
Это руководство начинается с того места, где закончилось руководство по подключению к SQL Server из программы PHP.
Вставка данных в таблицу с использованием PDO
Мы добавим новую строку в таблицу «Авторы» в базе данных BookStore.
Шаг 1. Определите класс Author
Создайте новый файл author.php в каталоге проекта и определите класс Author, который представляет строку в таблице Authors:
id = $id; $this->firstName = $firstName; $this->lastName = $lastName; $this->birthDate = $birthDate; } public function getId() { return $this->id; } public function setId($id) { $this->id = $id; } public function getFirstName() { return $this->firstName; } public function setFirstName($firstName) { $this->firstName = $firstName; } public function getLastName() { return $this->lastName; } public function setLastName($lastName) { $this->lastName = $lastName; } public function getBirthDate() { return $this->birthDate; } public function setBirthDate($birthDate) { $this->birthDate = $birthDate; } }
Класс Author имеет свойства id, firstName, lastName и birthDate с соответствующими геттерами и сеттерами.
Шаг 2. Определение класса AuthorDB
Создайте новый файл authordb.php и определите класс AuthorDB:
conn = $conn; } }
Как это работает.
Сначала включите файл author.php:
require_once 'author.php';
Во-вторых, определите класс AuthorDB:
class AuthorDB
В-третьих, определите конструктор, который принимает объект PDO в качестве параметра:
public function __construct(private \PDO $conn) { $this->conn = $conn; }
Шаг 3. Определение метода insert()
Определите метод insert(), который вставляет новую строку в таблицу Authors:
public function insert(Author $author) { $sql = 'INSERT INTO Authors(FirstName, LastName, BirthDate) VALUES(:firstName, :lastName, :birthDate)'; $stmt = $this->conn->prepare($sql); $stmt->execute([ 'firstName' => $author->getFirstName(), 'lastName' => $author->getLastName(), 'birthDate' => $author->getBirthDate() ]); return $this->conn->lastInsertId(); }
Как это работает.
Сначала определите метод insert(), который принимает объект Author:
public function insert(Author $author)
Во-вторых, создайте оператор INSERT, который вставляет новую строку в таблицу Authors:
$sql = 'INSERT INTO Authors(FirstName, LastName, BirthDate) VALUES(:firstName, :lastName, :birthDate)';
:firstName, :lastName и :birthDate являются заполнителями для параметров оператора. При выполнении оператора вам необходимо указать фактические значения для этих параметров.
Обратите внимание, что использование параметризованного оператора может помочь предотвратить атаки с использованием SQL-инъекций.
В-третьих, создайте подготовленное заявление:
$stmt = $this->conn->prepare($sql);
В-четвертых, выполните подготовленное выражение с именем, фамилией и датой рождения, предоставленными объектом Author:
$stmt->execute([ 'firstName' => $author->getFirstName(), 'lastName' => $author->getLastName(), 'birthDate' => $author->getBirthDate() ]);
В-пятых, верните вставленный идентификатор автора, вызвав метод lastInsertId() объекта Connection:
return $this->conn->lastInsertId();
Шаг 4. Использование класса AuthorDB
Измените файл index.php и используйте метод insert() объекта AuthorDB, чтобы вставить новую строку в таблицу Authors:
insert($author); echo "Author ID: $authorId";
Как это работает.
Сначала загрузите файл authordb.php, чтобы использовать класс AuthorDB.
require_once 'authordb.php';
Во-вторых, подключитесь к SQL Server и назначьте возвращенный объект PDO переменной $conn:
$conn = require_once 'connect.php';
В-третьих, создайте новый объект AuthorDB:
$authorDB = new AuthorDB($conn);
В-четвертых, создайте новый объект «Автор»:
$author = new Author('Anthony', 'Pham', '1980-12-31');
В-пятых, вставьте новую строку в объект Authors, вызвав метод insert() класса AuthorDB:
$authorId = $authorDB->insert($author);
Метод insert() возвращает вставленный идентификатор автора.
Наконец, отобразите вставленный идентификатор автора:
echo "Author ID: $authorId";
Шаг 5. Запуск скрипта.
Если вы видите в браузере следующее сообщение:
Author ID: 1
…вы успешно вставили нового автора с идентификатором 1 в таблицу «Авторы» в SQL Server.
Краткое содержание
- Выполните оператор INSERT, чтобы вставить новую строку в таблицу.
- Всегда используйте параметризованные запросы для предотвращения атак с использованием SQL-инъекций.