Описание : в этой статье вы узнаете, как использовать PHP PDO для вставки данных в таблицу MySQL.
Мы будем использовать таблицу tasks, созданную в руководстве по созданию таблиц PHP MySQL. Если вы еще не создали таблицу tasks, пожалуйста, следуйте учебнику и создайте ее, прежде чем продолжить работу с этой статьей.
Следующая картинка иллюстрирует таблицу tasks:
Чтобы вставить данные в таблицу, выполните следующие действия:
<?php class InsertDataDemo { const DB_HOST = 'localhost'; const DB_NAME = 'classicmodels'; const DB_USER = 'root'; const DB_PASSWORD = ''; private $pdo = null; /** * Открыть подключение к базе данных */ public function __construct() { // открыть подключение к базе данных $conStr = sprintf("mysql:host=%s;dbname=%s", self::DB_HOST, self::DB_NAME); try { $this->pdo = new PDO($conStr, self::DB_USER, self::DB_PASSWORD); } catch (PDOException $pe) { die($pe->getMessage()); } } //...
В следующем примере показано, как вставить новую строку в таблицу tasks.
/** * Вставка строки в таблицу * @return */ public function insert() { $sql = "INSERT INTO tasks ( subject, description, start_date, end_date ) VALUES ( 'Learn PHP MySQL Insert Dat', 'PHP MySQL. Вставка данных в таблицу', '2019-07-07', '2019-07-07' )"; return $this->pdo->exec($sql); }
Мы определили InsertDataDemoкласс с помощью конструктора, который устанавливает соединение с базой данных, и деструктора, который закрывает соединение с базой данных. Пожалуйста, обратитесь к статье PHP MySQL. Создать таблицу для использования этих методов.
Внутри InsertDataDemoкласса мы определяем метод вставки, который вызывает метод exec() объекта PDO для выполнения инструкции INSERT.
Следующий оператор создает экземпляр класса InsertDataDemo и вызывает метод insert() для вставки новой строки в таблицу задач.
$obj = new InsertDataDemo(); $obj->insert();
Давайте запросим данные в таблице tasks:
SELECT * FROM tasks;
Для динамической и безопасной передачи значений из PHP в оператор SQL вы используете подготовленный оператор PDO.
Во-первых, используйте оператор MySQL с именованными заполнителями следующим образом:
$sql = 'INSERT INTO tasks ( subject, description, start_date, end_date ) VALUES ( :subject, :description, :start_date, :end_date );';
: Subject,: description,: startdate и: enddate называются именованными заполнителями.
Во-вторых, вызовите метод prepare() объекта PDO, чтобы подготовить оператор SQL для выполнения:
$q = $pdo->prepare($sql);
В-третьих, вызовите метод execute() и передайте массив, содержащий значения, соответствующие именованным заполнителям.
$q->execute($task)
Собираем все вместе.
/** * Вставка новой задачи в таблицу tasks * @param string $subject * @param string $description * @param string $startDate * @param string $endDate * @return mixed возвращает false в случае неудачи */ function insertSingleRow($subject, $description, $startDate, $endDate) { $task = array(':subject' => $subject, ':description' => $description, ':start_date' => $startDate, ':end_date' => $endDate); $sql = 'INSERT INTO tasks ( subject, description, start_date, end_date ) VALUES ( :subject, :description, :start_date, :end_date );'; $q = $this->pdo->prepare($sql); return $q->execute($task); }
Теперь мы можем передать данные задачи в метод insertSingleRow():
obj->insertSingleRow('MySQL PHP вставить учебник', 'MySQL PHP. Вставить с использованием подготовленного оператора', '2019-07-07', '2019-07-08');
Давайте проверим таблицу tasks:
Есть два способа вставить несколько строк в таблицу:
Из этой статьи вы узнали, как вставлять данные в таблицу MySQL с помощью оператора PHP PDO.