Работа с базами данных в PHP Запись информации в базу данных MySQL с помощью PHP
Чтобы сделать запись в таблицу базы данных MySQL с помощью PHP, необходимо совершить следующие действия:
Получить информацию с веб страницы с помощью HTML формы
Подключиться к базе данных MySQL
Переводим данные из HTML формы в формат базы данных
Проверить корректность подключения к базе данных
Сформировать SQL запрос на запись в следующем формате
INSERT INTO имя таблицы (поле 1, поле 2 . ) VALUES ($значение поля 1,$значения поля 2 . )
Осуществить запрос к базе данных MySQL
Проверить корректность запроса
Закрыть соединение с базой данных
Разберём алгоритм записи информации в базу данных MySQL с помощью PHP на примере.
В статье Работа с базами данных в php мы создали таблицу Users с полями ID, name, age
Напишем PHP сценарий, который добавляет запись в эту таблицу
Сформируем HTML форму для получения данных с веб страницы
Подробнее о работе с HTML формами
Осуществляем подключение к базе данных MySQL и делаем проверку на корректность.
Подробнее о работе с базами данных MySQL
if(isset($_GET[‘formSubmit’])) $nameform=$_GET[‘name’];
$ageform=$_GET[‘age’];
$mysqli = new mysqli(«localhost», «root», «root», «base_db»);
if ($mysqli->connect_errno) echo «Извините, возникла проблема на сайте»;
echo «Ошибка: Не удалось создать соединение с базой MySQL по данной причине: «;
echo «Номер ошибки: » . $mysqli->connect_errno . » «;
echo «Ошибка: » . $mysqli->connect_error . » «;
exit;
>
Переводим данные из HTML формы в формат базы данных MySQL
$name = ‘»‘.$mysqli->real_escape_string($nameform).'»‘;
$age = ‘»‘.$mysqli->real_escape_string($ageform).'»‘;
Формируем и осуществляем SQL запрос на ввод данных в таблицу базы данных MySQL
$query = «INSERT INTO users (name,age) VALUES ($name,$age)»;
$result = $mysqli->query($query);
Проверяем осуществление SQL запроса на корректность
if($result) print ‘Success! ‘.’
‘;
>else die(‘Error : (‘. $mysqli->errno .’) ‘. $mysqli->error);
>
Закрываем соединение с базой данных mysql
$mysqli->close();
Полный код PHP скрипта добавление записи в таблицу базы данных
if(isset($_GET[‘formSubmit’])) $nameform=$_GET[‘name’];
$ageform=$_GET[‘age’];
$mysqli = new mysqli(«localhost», «root», «root», «base_db»);
if ($mysqli->connect_errno) echo «Извините, возникла проблема на сайте»;
echo «Ошибка: Не удалась создать соединение с базой MySQL и вот почему: «;
echo «Номер ошибки: » . $mysqli->connect_errno . » «;
echo «Ошибка: » . $mysqli->connect_error . » «;
exit;
>
$name = ‘»‘.$mysqli->real_escape_string($nameform).'»‘;
$age = ‘»‘.$mysqli->real_escape_string($ageform).'»‘;
$query = «INSERT INTO users (name,age) VALUES ($name,$age)»; //готовим запрос. будем выбирать все из //таблицы workers
$result = $mysqli->query($query); // выполняем запрос query.
//объект результата сохраняем в $result
if($result) print ‘Success! ‘.’
‘;
>else die(‘Error : (‘. $mysqli->errno .’) ‘. $mysqli->error);
>
$mysqli->close();
>
?>
Пример работы php скрипта
Можем зайти в PhpMyAdmin и проверить таблицу users. Запись была добавлена

Комментарии ( 0 )
Нет комментариев. Ваш будет первым!
Insert в MySQL — добавление данных в таблицу
В статье расскажем, для чего нужна команда INSERT в MySQL и покажем как ей пользоваться на десяти практических примерах.
Зачем нужна команда Insert
Команда INSERT используется для того, чтобы вставлять новые данные в таблицы. Общий и наиболее часто используемый синтаксис выглядит так:
INSERT into table_name [(column1, [, column2] . )] values (values_list)
Минимальный набор обязательных параметров: название таблицы и список значений. Но часто также указывают список столбцов, в которые нужно вставить данные. Есть еще много других необязательных параметров и возможностей. Самую основную часть из них мы посмотрим в этой статье.
Создаем базу MySQL в облаке
Прежде чем начать работать с командой Insert, нам нужна база данных MySQL. Чтобы не заниматься долгой установкой и настройкой, мы создадим управляемую БД на платформе Selectel. Если сервер MySQL у вас уже установлен, можете сразу переходить к следующему разделу.
Заходим в личный кабинет, в разделе «Облачная платформа» переходим к «Базам данных». Нажимаем кнопку «Создать кластер».

На следующем экране выбираем параметры новой базы. Выбираем «СУБД» — MySQL. Далее необходимо выбрать конфигурацию сервера: нам будет достаточно 2 vCPU, 4 ГБ оперативной памяти и 32 ГБ диска. Обратите внимание на раздел «Сеть» — у вас должна быть выбрана публичная сеть, чтобы к базе данных можно было подключиться из интернета. Остальные параметры можно оставить по умолчанию.

Немного подождем, пока сервер создается. Когда он перейдет в статус ACTIVE, выберите его и зайдите в раздел настроек. Сначала перейдем на вкладку «Пользователи» и создадим нового пользователя, который сможет подключаться к базе данных. Не забудьте записать имя пользователя и пароль, они будут нужны для подключения.

Затем перейдем на следующую вкладку — «Базы данных». Нам нужно создать базу, в которой мы будем работать. Для этого нажмем кнопку «Создать базу данных». Запишите название созданной БД, оно нам будет нужно для подключения.

Когда база создастся, нужно дать нашему пользователю права на нее. На этой же вкладке нажмем кнопку «Добавить» и выберем недавно созданного пользователя.

Все, БД настроена и к ней можно подключаться. Чтобы узнать параметры подключения, перейдите на вкладку «Настройки» и там в самом низу в разделе «Подключение» указаны нужные параметры. Вы можете пользоваться консольным клиентом или любой графической утилитой. Мы будем показывать на примере консольного клиента, поэтому строка для подключения будет выглядеть вот так:
mysql --host=109.71.10.30 \ --port=6033 \ --user=chrystal \ --password \ --database=db
После ввода этой команды консоль попросит нас ввести пароль. Вот и все, мы подключились к БД.
Структура таблиц для примеров
Все дальнейшие команды мы будем показывать на простом примере из трех таблиц. Допустим, мы — сеть фруктовых магазинов. У нас есть таблица со списком магазинов, таблица со списком товаров (фруктов) и таблица, в которой мы записываем какой фрукт в каком магазине продается и по какой цене.
С помощью команды Insert мы будем вставлять в эти таблицы новые данные разными способами. Итак, вот описание наших таблиц и начальные данные в них:
+----+------------------+--------------+ | id | name | address | +----+------------------+--------------+ | 1 | Магазин 1 | Адрес 1 | | 2 | Магазин 2 | Адрес 2 | | 3 | Магазин 3 | Адрес 3 | +----+------------------+--------------+
+----+------------------+ | id | name | +----+------------------+ | 1 | Яблоко | | 2 | Мандарин | | 3 | Банан | +----+------------------+
- sale, таблица наличия товаров и цены:
+----------+----------+-------+-------+ | store_id | fruit_id | price | count | +----------+----------+-------+-------+ | 1 | 3 | 60 | 20 | | 2 | 2 | 80 | 10 | | 3 | 1 | 120 | 12 | +----------+----------+-------+-------+
Пример 1: базовое использование команды INSERT
Начнем с самого простого использования команды INSERT в MySQL. Добавим новый фрукт в справочник фруктов. Команда будет выглядеть так:
INSERT INTO fruits VALUES (4, 'Апельсин');
Проверяем таблицу фруктов и видим, что появилась новая запись:
+----+------------------+ | id | name | +----+------------------+ | 1 | Яблоко | | 2 | Мандарин | | 3 | Банан | | 4 | Апельсин | +----+------------------+
Мы не указывали названия столбцов, в которые хотим вставить данные. Поэтому они вставлялись по порядку, как они расположены в таблице. Поэтому нам нужно было указывать значения для всех столбцов, которые есть в таблице, даже если мы не хотим их заполнять.
Но если в таблице много столбцов, нам может быть неудобно указывать много пустых значений. Поэтому существует другой способ записи, в котором нужно явно указывать названия столбцов.
INSERT INTO stores (id, name) VALUES (4, 'Магазин 4');
Обратите внимание, что в таблице stores у нас еще есть столбец с адресом, но мы его не указали. Посмотрим, что вставилось в таблицу:
+----+------------------+--------------+ | id | name | address | +----+------------------+--------------+ | 1 | Магазин 1 | Адрес 1 | | 2 | Магазин 2 | Адрес 2 | | 3 | Магазин 3 | Адрес 3 | | 4 | Магазин 4 | NULL | +----+------------------+--------------+
Мы видим указанные нами значения, а в поле address вставилось значение NULL.
Пример 2: вставка нескольких строк
За один запрос можно добавлять сразу несколько элементов. Например, мы хотим добавить три новых фрукта. Вместо того, чтобы писать три отдельных команды INSERT, мы воспользуемся вот таким способом записи:
INSERT INTO fruits VALUES (5, 'Киви'), (6, 'Виноград'), (7, 'Груша');
Посмотрим результат. Видим, что появилось сразу три новых записи:
+----+------------------+ | id | name | +----+------------------+ | 1 | Яблоко | | 2 | Мандарин | | 3 | Банан | | 4 | Апельсин | | 5 | Киви | | 6 | Виноград | | 7 | Груша | +----+------------------+
Пример 3: использование SET
В команде INSERT мы обычно указываем отдельно столбцы и отдельно значения. Но есть способ записи, похожий на команду UPDATE: указывать столбцы и их значения через символ равенства. Такой способ может быть удобен, когда в таблице много полей и значений. Так сразу видно, в какое поле какое значение подставляется.
INSERT INTO sale SET store_id=1, fruit_id=1, price=89, count=3;
Проверим, что числа вставились именно в те столбцы, которые мы указали:
+----------+----------+--------+-------+ | store_id | fruit_id | price | count | +----------+----------+--------+-------+ | 1 | 3 | 60 | 20 | | 2 | 2 | 80 | 10 | | 3 | 1 | 120 | 12 | | 1 | 1 | 89 | 3 | +----------+----------+--------+-------+
Пример 4: вставка с выражением
Во всех предыдущих примерах мы указывали явное значение для столбца. Но в MySQL можно использовать арифметические выражения, например сумму, разность, умножение и так далее. Допустим, мы хотим добавить запись в таблицу sale о том что в магазине № 2 продаются апельсины по 137 рублей. Но потом мы решаем, что хотим сделать скидку 6%. Чтобы не высчитывать ее самим, мы можем использовать такой запрос:
INSERT INTO sale VALUES (2, 4, 137*0.94, 5);
Мы умножаем 137 рублей на 0.94, это и есть скидка 6%. Проверим что у нас получилось:
+----------+----------+--------+-------+ | store_id | fruit_id | price | count | +----------+----------+--------+-------+ | 1 | 3 | 60 | 20 | | 2 | 2 | 80 | 10 | | 3 | 1 | 120 | 12 | | 1 | 1 | 89 | 3 | | 2 | 4 | 128.78 | 1 | +----------+----------+--------+-------+
Пример 5: вставка данных из другой таблицы
В качестве источника данных для вставки можно использовать другую таблицу. Предположим, у нас есть таблица fruits_new, где хранится список фруктов, которые мы заказали у поставщиков, но эти фрукты еще не продаются в наших магазинах. И вот наконец-то нам привезли два новых фрукта, которые мы так давно ждали. Но вместо того, чтобы переписывать эти названия в команду INSERT, мы можем просто использовать таблицу fruits_new и загружать данные из нее. Для этого нам понадобится оператор SELECT:
INSERT INTO fruits SELECT * FROM fruits_new WHERE >Обратите внимание, что мы не указываем названия столбцов: из какого взять и в какой вносить. Поэтому такой способ подойдет только если структура таблиц одинакова, или в таблице-источнике меньше столбцов. Чаще всего используется другой синтаксис, когда столбцы указаны явно:
INSERT INTO fruits (name, id) SELECT name, id FROM fruits_new WHERE >Проверим результат. После выполнения этих двух команд у нас должно появиться две новых строки:
+----+------------------+ | id | name | +----+------------------+ | 1 | Яблоко | | 2 | Мандарин | | 3 | Банан | | 4 | Апельсин | | 5 | Киви | | 6 | Виноград | | 7 | Груша | | 8 | Ананас | | 9 | Вишня | +----+------------------+
Пример 6: вставка значения по умолчанию
Обычно, если в MySQL для столбца не указано значение, то команда INSERT INTO подставляет NULL. Но если при создании таблицы у этого столбца было указано значение по умолчанию (default), тогда подставится именно оно. В нашей таблице sale у столбца count значение по-умолчанию равно единице. Проверим это, вставив новую запись без указания этого столбца:
INSERT INTO sale (store_id, fruit_id, price) VALUES(4, 7, 50);
Проверяем результат. Мы не указывали значение для столбца count, но автоматически подставлилось значение 1.
+----------+----------+--------+-------+ | store_id | fruit_id | price | count | +----------+----------+--------+-------+ | 1 | 3 | 60 | 20 | | 2 | 2 | 80 | 10 | | 3 | 1 | 120 | 12 | | 1 | 1 | 89 | 3 | | 2 | 4 | 128.78 | 5 | | 4 | 7 | 50 | 1 | +----------+----------+--------+-------+
Пример 7: вставка или обновление при дубликате
В MySQL нельзя добавить строку в таблицу, у которой дублируется первичный ключ (primary key). В наших таблицах stores и fruits поле id — это первичный ключ. Поэтому если мы попробуем добавить в таблицу fruit значение с то MySQL выдаст ошибку.
Но существует похожая на INSERT команда — REPLACE, которая умеет перезаписывать значения. Она работает как INSERT и UPDATE одновременно: если в таблице еще нет записи с таким первичным ключом, команда создаст новую запись; а если уже есть — заменит ее.
REPLACE INTO fruits VALUES (1, 'Лимон');
Проверяем результат и видим, что вместо яблока у нас появился лимон с тем же идентификатором.
+----+------------------+ | id | name | +----+------------------+ | 1 | Лимон | | 2 | Мандарин | | 3 | Банан | | 4 | Апельсин | | 5 | Киви | | 6 | Виноград | | 7 | Груша | | 8 | Ананас | | 9 | Вишня | +----+------------------+
Пример 8: игнорирование ошибки при вставке
Продолжим предыдущий пример. Допустим, записи в нашу таблицу вставляет бэкенд-сервис приложения. Мы хотим, чтобы сервис попробовал вставить новую запись, но если такой первичный ключ уже существует — ничего не обновлял и просто шел выполнять другой код. Но при совпадении ключей MySQL выдаст ошибку, а код на бэкенде прервется и ее нужно будет обрабатывать в сервисе. Гораздо проще добавить к команде INSERT ключевое слово IGNORE, чтобы при совпадении первичного ключа MySQL не генерировал ошибку:
INSERT IGNORE INTO stores VALUES (1, 'Магазин 10', 'Адрес 10');
Обратите внимание на сообщение, которое выдает MySQL, оно будет примерно таким: Query OK, 0 rows affected, 1 warning. Это значит, что запрос выполнился успешно, при этом он не затронул ни одну строки и есть одно предупреждение. Проверим результат: видим, что новых магазинов не появилось, а текущие не изменились.
+----+------------------+--------------+ | id | name | address | +----+------------------+--------------+ | 1 | Магазин 1 | Адрес 1 | | 2 | Магазин 2 | Адрес 2 | | 3 | Магазин 3 | Адрес 3 | | 4 | Магазин 4 | NULL | +----+------------------+--------------+
Пример 9: вставка записи в определенные партиции
Если таблица разбита на партиции, то при вставке данных можно сразу указать, в какой именно раздел вставлять запись. Наша таблица sales разбита на несколько партиций согласно условию:
- p0 для записей, у которых count от 0 до 100
- p1 для записей, у которых count от 101 до 150.
Чтобы вставить данные в первую партицию, воспользуемся командой:
INSERT INTO sale PARTITION (p0) VALUES (1, 9, 130, 10);
Кроме того, в одной команде мы можем вставлять данные сразу в несколько партиций. Это делается так:
INSERT INTO sale PARTITION (p0, p1) VALUES (4, 8, 90, 10), (3, 7, 50, 120);
Пример 10: изменение приоритета
В некоторых движках таблиц MySQL (например, в MyISAM, MEMORY и MERGE) можно изменить приоритет вставки данных. Например, можно сделать так, что если таблицу считывает команда SELECT, то команда INSERT будет ждать ее завершения. Это делается с помощью ключевого слова LOW_PRIORITY:
INSERT LOW_PRIORITY INTO sale VALUES (1, 6, 40, 3);
Если же нужно наоборот поднять приоритет, используется такая команда:
INSERT HIGH_PRIORITY INTO sale VALUES (1, 6, 40, 3);
Но нужно иметь ввиду, что если к таблице активно идут SELECT-запросы, то команда INSERT с низким приоритетом может ждать своей очереди довольно долго.
Заключение
Мы рассмотрели команду INSERT и познакомились с десятью самыми основными способами ее использования. Вы узнали, как с помощью SQL команды можно добавить новую строку в таблицу или обновить существующую. Зная эти основы, вы можете начать писать INSERT-запросы для своей структуры БД.
ALTER TABLE — изменение таблицы в SQL
Работа с командой UPDATE — как обновить данные в таблице MySQL
Зарегистрируйтесь в панели управления
И уже через пару минут сможете арендовать сервер, развернуть базы данных или обеспечить быструю доставку контента.
Как записать данные из формы в базу данных mysql? PHP 7
Сколько уже не перепробовал с разных сайтов, не хочет записывать в мою БД((( Помогите плиз, данные от БД такие Хост: localhost Пользователь: 1 Пароль: 1 Имя БД: vk2 Имя таблицы: users Нужно занести в бд: id, login, password
Отслеживать
задан 24 июн 2020 в 0:29
5 1 1 бронзовый знак
Не нужно минусовать и репортить такие вопросы. Стаковерфлой задумывался для ответов именно на такие вопросы, а не «памагитя ничево ниработит». Закрывать вопрос «как сделать то-то» следует только если есть дубликат с нормальным ответом
24 июн 2020 в 11:30
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Дополню ответ колеги для случая, когда данные для запроса берутся из переменных
prepare($sql); $stmt->bind_param("ss", $email, $password); $stmt->execute(); $id = $mysqli->isert_id;
Что здесь происходит?
-
Код соединения не стоит писать в каждом скрипте, его лучше положить в отдельный файл и инклюдить. По минимуму, код в этом файле должен быть такой
set_charset('utf8mb4');
Отслеживать
ответ дан 24 июн 2020 в 11:29
20.4k 3 3 золотых знака 27 27 серебряных знаков 49 49 бронзовых знаков
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); $mysqli = new mysqli('127.0.0.1', '1', '1', 'vk2'); $mysqli->set_charset('utf8mb4'); $mysqli->query(" CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `test` varchar(250) NOT NULL DEFAULT '' ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; "); $mysqli->query(" INSERT INTO test VALUES( NULL, 'test' ) ");
Работа с базой данных, php и MySQL
Пожалуй одно из главных предназначений PHP, это взаимодействие с базой данных (чтение, запись, редактирование и удаление данных) на веб-сервере. Именно это позволяет веб-мастерам поддерживать и развивать динамические сайты с тысячами страниц.
Что такое реляционная база данных
Реляционная база данных – это база данных основанная на реляционной модели (от англ. relationship — отношение, связь) выражаясь по другому, это некий набор данных с определёнными связями между ними. Обычно такие базы организованны в виде таблиц. В отдельных таблицах хранится сгруппированная по определённому смыслу информация о какой-либо сущности, например данные о покупателях (сущность — покупатель) или данные о товарах (сущность — товар) и т.д. Каждый столбец таблицы отвечает за хранение одного свойства сущности, внутри ячейки хранится значение свойства сущности, например столбец — цена, значение — 1000.
Преимущественно отдельные столбцы имеют строго определённый тип данных (числовой, логический, текстовый, дату и время и т.д.). Каждая стока таблицы это набор значений свойств относящихся к определённой сущности (напр. определённому пользователю может соответствовать строка где хранит его имя, фамилия, телефон, email, возраст и пол.). Каждая строка в таблице должна иметь уникальный идентификатор, а так же так называемый «первичный ключ» (часто первичный ключ = уникальный идентификатор). При помощи первичного ключа, несколько таблиц базы данных могут быть связаны, например в таблице users — хранятся пользователи, а в таблице orders — заказы пользователей сделанные в интернет-магазине. По первичному ключу user_id (идентификатор пользователя) мы можем узнать что этот пользователь заказал, т.е. получить данные из таблицы orders.
Для работы с реляционными базами данных существует множество инструментов, они позволяют «вытаскивать» из БД различные наборы данных, даже более сложные чем в приведённом примере, при этом, структура таблиц не требует реорганизации.
СУБД MySQL
Что же такое MySQL? Это надежная. быстрая и универсальная система управления базами данных (СУБД), пожалуй самая популярная в мире (в 2019 году 39% разработчиков использовали MySQL в своих проектах). Несмотря на более слабый функционал в сравнении с PostgreSQL, данная СУБД прекрасно масштабируется и отлично подходит для большинства проектов.
MySQL — идеальный выбор для разработке веб-приложений. Данная СУБД входит в стандартный набор: Linux, Apache HTTP Server, MySQL и PHP (LAMP — набор программ с открытым исходным кодом). Так же не основе MySQL работает большинство популярных CMS ( Content Management System — система управление содержимым), таких как WordPress, OpenCart, 1С Битрикс и т.д.
К преимуществам этой СУБД можно отнести:
- Простота: Mysql легко установить на любую платформу (Linux, Windows, MacOS), под эту СУБД написано множество настольных приложений позволяющих работать с базой в визуальном режиме (очень удобно особенно для новичков), к подобным системам относятся Workbench, Navicat, PHPMyAdmin и другие.
- Много функций: MySQL поддерживает весь функционал реализованный на языке SQL.
- Безопасность: в СУБД MySQL встроено много функций безопасности, например Access Control Lists и поддержка SSH-зашифрованных соединений.
- Масштабируемость: MySQL достаточно легко и не дорого масштабируется, что позволяет разрабатывать на ней довольно крупные и высоко-нагруженные проекты.
В большинстве языков программирования встроена поддержка СУБД MySQL, PHP так же не стал исключением.
PHP PDO

PDO — это специализированный класс реализующий интерфейс доступа к базе данных. Его отличает универсальность, т.к. вам без разницы какая база данных будет использована.
Подключение к БД
Для подключения к БД необходимо создать экземпляр класса PDO и передать в него параметры подключения:
/* Подключение к базе данных MySQL с помощью PDO */ $dsn = 'mysql:dbname=testdb;host=localhost'; $user = 'root'; $password = '123456'; //Чтобы перехватить ошибки подключения используем исключения try catch () try < $dbh = new PDO($dsn, $user, $password); >catch (PDOException $e) < //В случае ошибки выводим сообщения из перехваченного исключения echo 'Подключение к БД не удалось: ' . $e->getMessage(); >
Конструктор PDO так же поддерживает и четвёртый параметр options — это массив ключ=>значение специфичных для драйвера (например MySQL или PostgreSQL) настроек подключения. Например сразу после подключения можно выполнить MySQL запрос указав это в параметре options:
//Чтобы перехватить ошибки подключения используем исключения try catch () try < $dbh = new PDO( $dsn, $user, $password, [PDO::MYSQL_ATTR_INIT_COMMAND =>"SET NAMES 'utf8'"] //Команда которую необходимо выполнить сразу после подключения к серверу ); > catch (PDOException $e) < //В случае ошибки выводим сообщения из перехваченного исключения echo 'Подключение к БД не удалось: ' . $e->getMessage(); >
Полный перечень параметров доступных в options вы найдёте в документации.
Базовый набор операций (CRUD)
Большинство веб-приложений работающих с базой данных, так или иначе реализуют базовый набор операций, а именно Create — создание, Read — чтение, Update — обновление и Delete — удаление (CRUD). Давайте рассмотрим как этот набор операций сделать в PDO.
Создание
Для теста, давайте создадим таблицу с пользователями сайта и заполним её данными. Таблица будет называться просто users и иметь 4 поля:
- id — автоинкрементный идентификатор записи
- name — имя пользователя
- email — адрес электронной почты
- phone — контактный телефон
try < //Соединяемся с базой данных $dbh = new PDO('mysql:dbname=test_db;host=localhost', $user, $password); //запрос на создание таблицы $sqlCreateTable = 'CREATE TABLE `users` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, `email` VARCHAR(255) NOT NULL, `phone` VARCHAR(255) NOT NULL, PRIMARY KEY (`id`)) '; $dbh->exec($sqlCreateTable); echo 'Создана таблица users'; > catch(PDOException $e) < echo 'Ошибка: ' . $e->getMessage(); >
Здесь мы используем метод exec() он запускает запрос на выполнение возвращая количество затронутых строк. Метод не предназначен для выборки данных из таблицы. Если всё сделано верно у вас будет создана таблица пользователей. Давайте заполним её данными.
/*Данные пользователей, в реальном проектк они могут быть получены из JSON, файла импорта или из формы регистрации */ $usersData = [ [ 'name'=>'Иван Иванов', 'email'=>'ivan@mail.ru', 'phone'=>'+79001234567'], [ 'name'=>'Пётр Петров', 'email'=>'petrov@yandex.ru', 'phone'=>'+79281534874'], [ 'name'=>'Олег Сидоров', 'email'=>'sidor@gmail.com', 'phone'=>'+79508975248' ], ]; try < //Соединяемся с базой данных $dbh = new PDO('mysql:dbname=test_db;host=localhost', $user, $password); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //Подготовка запроса, обратите внимание что ключи в запросе совпадают с ключами массив отдельного пользователя $data = $dbh->prepare('INSERT INTO users (name, email, phone) VALUES(:name, :email, :phone)'); //Перебираем массив пользователей foreach ($usersData as $user) < //Подставляем данные пользователей в запрос $data->execute($user); > > catch(PDOException $e) < echo 'Ошибка: ' . $e->getMessage(); >

Если всё сделано верно, вы получите заполненную таблицу users:
Чтение
Прочитать записи в таблице БД можно несколькими способами, при помощи метода query и execute , давайте разберём оба:
Чтение таблицы при помощи метода query

В результате на экране вы увидите такую картину:
Обратите внимание на следующее:
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Данные параметры устанавливают расширенный режим вывода ошибок и исключение PDO.
Чтение таблицы при помощи метода execute
Давайте выберем из БД одного пользователя по конкретному email адресу.
В данном примере используется метод prepare т.е. подготовка запроса. Это позволят почти с 100% гарантией избежать SQL инъекций т.к. подставляемый параметры email не встраивается в зарос напрямую, в запросе есть лишь метка :email куда через метод execute будет подставлена переданная через ассоциативный массив переменная.
В результате выполнения запроса, получаем одну запись из таблицы users:
Редактирование
Давайте теперь изменим контактный телефон для пользователя с id равным 2 и сразу посмотрим на результат (выведем на экран список всех пользователей).

Как видите, запись обновилась:
Отлично, осталось понять как удалять запись. Давайте удалим того же пользователя, этот Пётр Петров мне надоел =)
Удаление
И так, мы знаем что у пользователя Пётр Петров id равен 2, приступим:
try < //id пользователя Пётр Петров $id = 2; //Соединяемся с базой данных $dbh = new PDO('mysql:dbname=test_db;host=localhost', $user, $password); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //Подготовка запроса $data = $dbh->prepare('DELETE FROM users WHERE $data->bindParam('id', $id); $data->execute(); echo 'Удалено записей: ' . $data->rowCount(); > catch(PDOException $e) < echo 'Ошибка: ' . $e->getMessage(); >
Как видите, здесь для подстановки параметра в запрос мы использовали метод bindParam() им удобно пользоваться когда нам нужно подставить единичную переменную в запрос. Обратите внимание, что второй аргумент не может быть передан напрямую в виде значение (нельзя написать просто 2), мы должны передать именно переменную (которую по идеи нужно предварительно проверить и всё такое).
Как видите работать с PDO да и в целом с базами данных в PHP не так уж и сложно. Надеюсь статья была вам полезна. Желаю удачи!
