В этом уроке вы узнаете, как вставить новую строку в таблицу из 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-инъекций.

