PHP SQL Server: Вставка данных

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

Автор статей, ИБ-специалист