Как добавить запись в таблицу sql
Добавить одну запись в таблицу можно с помощью следующего запроса:
INSERT INTO tablename (field1, field2, field3) VALUES ('value of field1', 'value of field2', 'value of field3');
Мы добавили в таблицу tablename строку со значениями полей для field1 , field2 , field3 : ‘value of field1’ , ‘value of field2’ , ‘value of field3’ , соответственно.
Как Сделать Запись в Базу Данных MySQL, Используя PHP-код
В этом руководстве вы узнаете, как происходит добавление записи в таблицу MySQL (INSERT) с использованием PHP. Мы рассмотрим два метода: MySQLi и PDO. Но прежде чем приступим непосредственно к реализации инструкции по добавлению записи с помощью PHP в базу даннных MySQL, нам понадобится доступ к панели управления хостингом.
Успейте получить огромную скидку на хостинг с поддержкой PHP! Ограниченное по времени предложение — скидки до 85%!
Если вы сомневаетесь или не знаете, как настроить подключение к MySQL, вы можете ознакомиться с этим руководством по PHPMySQL, которое охватывает наиболее важные этапы работы с PHP и базами данных.
Создание Таблицы (По необходимости)
Прежде всего, нам нужно создать таблицу для ваших данных. Если она у вас уже есть, смело переходите к следующему разделу. Процедура очень простая. Создать таблицу можно в phpMyAdmin из вашей панели управления хостингом.

После входа на страницу phpMyAdmin вы увидите подобную картину:

Давайте создадим таблицу с названием Students для нашей базы данных u104357129_name. Создать новую таблицу можно, нажав на кнопку Create Table. После этого вы увидите новую страницу со всеми необходимыми полями для ввода данных.

Поскольку создание таблицы не основная тема этого руководства, мы не будем углубляться в подробности. Если вам нужно больше информации о структуре таблицы/базы данных и о том, какие настройки вы можете использовать для каждого столбца, рекомендуем обратиться к официальной документации phpMyAdmin (англ.).
Здесь приведём лишь несколько простых пояснение столбцов, которые мы будем использовать:
- Name — это имя столбца. Будет отображено в самом верху вашей таблицы.
- Type — тип ваших данных. Вы можете указать любой тип: int, varchar, string и многие другие. Например, мы указали varchar, поскольку нам нужно ввести строку переменной длины, содержащую буквы, не цифры.
- Length/Values — используется для задания максимальной длины вашей записи в столбце.
- Index — для нашего поля “ID” мы используем индекс “Primary”. Когда создаётся таблица, рекомендуется иметь один столбец ID. Он используется для индексации записей в таблице, когда настраиваются взаимосвязи между таблицами. Здесь также можно отметить “A_I”, что означает Auto Increment. Эта настройки будет автоматически увеличивать индекс (1,2,3,4…).
Нажмите Save, чтобы сохранить вашу таблицу.
Создание PHP Кода и Добавление Записи в Таблицу MySQL (Insert)
Есть два способа вставить данные в вашу базу данных MySQL. Метод PHP MySQLi и PHP Data Object, или PDO.
Метод с MySQLi
Прежде всего, нужно установить соединение с базой данных. После этого мы можем продолжить с SQL запросом на добавление записи в таблицу MySQL — INSERT. Ниже показан полный пример PHP кода с методами подключения и вставки:
echo "Connected successfully"; $sql = "INSERT INTO Students (name, lastname, email) VALUES ('Test', 'Testing', 'Testing@tesing.com')"; if (mysqli_query($conn, $sql)) < echo "New record created successfully"; >else < echo "Error: " . $sql . "
" . mysqli_error($conn); > mysqli_close($conn); ?>
Первая часть кода (строки 3 – 18) касается подключения к базе данных. Мы не станем углубляться, так как у нас есть отдельное подробное руководство по этой теме. Если вы хотите знать, что означает каждая строка, читайте, как подключиться к базе данных.
Начнём со строки 19:
$sql = "INSERT INTO Students (name, lastname, email) VALUES ('Test', 'Testing', 'Testing@tesing.com')";
Это наиболее важная строка PHP кода, поскольку именно она отвечает за добавление записи в таблицу MySQL. INSERT INTO — это выражение, которое добавляет запись в указанную таблицу базы данных MySQL. В нашем примере мы добавляем данные в таблицу Students.
Двигаясь дальше, в скобках, мы указываем имена столбцов таблицы, в которые хотим добавить значения: (name, lastname, email). Данные будут добавлены в определённом порядке. Если мы напишем (email, lastname, name), значения будут добавлены в неправильном порядке.
Следующая часть — выражение VALUES. Здесь мы задаём наши значения в ранее указанные поля. Таким образом, каждый столбец получит своё значение. Например, в нашем случае это будет что-то вроде: name = Test, lastname = Testing, email = Testing@testing.com.
Также стоит отметить, что мы только что выполнили SQL-запрос с использованием кода PHP. SQL-запросы должны быть заключены в кавычки. В нашем примере всё между кавычками и записанное после $sql = является SQL-запросом.
Следующая часть кода (20 – 22 строки) проверяет успешность нашего запроса:
if (mysqli_query($conn, $sql))
Мы увидим это сообщение, если запрос выполнен успешно.
И последняя часть ( строки 22 – 24) демонстрирует пример другого сообщения.
else < echo "Error: " . $sql . "
" . mysqli_error($conn); >
Вы увидите подобное сообщение в случае возникновения ошибки при попытке отправить запрос.
Метод с PHP Data Object (PDO)
Как и в предыдущем примере, нам нужно прежде всего выполнить подключение к базе данных, которое производится при создании нового объекта PDO. Как это сделать, показано в уже не раз упомянутом руководстве. Поскольку подключение к базе данных MySQL является объектом PDO, мы должны использовать различные PDO методы (любую функцию, которая является частью любого объекта) для подготовки и запуска запросов. Методы объектов вызываются слудеющим образом:
$the_Object->the_Method();
PDO позволяет вам подготовить SQL-код перед его выполнением. Перед запуском SQL-запрос оценивается и корректируется. Не секрет, что взломщики могут модифицировать запрос. SQL-инъекция может быть осуществлена просто путём ввода SQL-кода в поле формы. Например:
// Пользователь вписывает это в поле имени пользователя в форме для входа john"; DROP DATABASE user_table; // И вот, во что превращается окончательный запрос "SELECT * FROM user_table WHERE username = john"; DROP DATABASE user_table;
Поскольку SQL-код синтаксически правильный, точка с запятой делает из DROP DATABASE user_table новый SQL-запрос, а ваша таблица пользователей удаляется. Подготовляемые запросы, также известные как связываемые переменные не позволят завершить запрос, использовав символы “ и ;. Как результат, вредоносная инструкция DROP DATABASE не будет выполнена.
Всегда используйте подготовляемые запросы, когда отправляете или получаете данные из базы данных с PDO
Чтобы использовать подготовляемые запросы, вы должны написать новую переменную, которая вызывает метод prepare() объекта базы данных.
В правильном виде код выглядит так:
PDO::ERRMODE_EXCEPTION]; // Создаём новое соединение с базой данных MySQL с использованием PDO, $my_Db_Connection — это объект try < $my_Db_Connection = new PDO($sql, $username, $password, $dsn_Options); echo "Connected successfully"; >catch (PDOException $error) < echo 'Connection error: ' . $error->getMessage(); > // Задаём переменные для человека, которого мы хотим добавить в базу данных $first_Name = «Test»; $last_Name = «Testing»; $email = «Testing@testing.com»; // Здесь мы создаём переменную, которая вызывает метод prepare() объекта базы данных // SQL-запрос, который вы хотите запустить, вводится как параметр, а плейсхолдеры записываются следующим образом — :placeholder_name $my_Insert_Statement = $my_Db_Connection->prepare(«INSERT INTO Students (name, lastname, email) VALUES (:first_name, :last_name, :email)»); // Теперь мы сообщаем скрипту, на какую переменную фактически ссылается каждый плейсхолдер, используя метод bindParam() // Первый параметр — это плейсхолдер в приведённом выше выражении, второй параметр — это переменная, на которую он должен ссылаться $my_Insert_Statement->bindParam(:first_name, $first_Name); $my_Insert_Statement->bindParam(:last_name, $last_Name); $my_Insert_Statement->bindParam(:email, $email); // Выполните запрос, используя данные, которые мы только-что определили // Метод execute() возвращает TRUE, если запрос был выполнен успешно и FALSE в противном случае, позволяя вам создавать собственные сообщения if ($my_Insert_Statement->execute()) < echo "New record created successfully"; >else < echo "Unable to create record"; >// На этом этапе вы можете изменить данные переменных и выполнить запрос снова, чтобы добавить больше данных в БД. $first_Name = «John»; $last_Name = «Smith»; $email = «john.smith@email.com»; $my_Insert_Statement->execute(); // Выполните снова с другими переменными if ($my_Insert_Statement->execute()) < echo "New record created successfully"; >else
В строках 28, 29 и 30 мы используем метод bindParam() объекта базы данных. Есть так же метод bindValue(), отличающийся от предыдущего.
- bindParam() — связывает переменную PHP с параметром, достигнув execute(). Первый раз, когда скрипт доходит до метода execute() он видит, что $first_Name ссылается на “Test”, связывает это значение и выполняет запрос. Когда скрипт добирается до метода execute() второй раз, он смотрит, что $first_Name теперь ссылается на “John”, связывает это значение и запускает запрос опять с новым значением. Важно понимать, что мы создаём запрос один раз и повторно используем его, подставляя разные данные в разных местах скрипта.
- bindValue() — этот метод связывает параметр с заданным значением. Поскольку заданное значение $first_Name — “Test”, при достижении метода bindValue(), оно будет использоваться каждый раз при вызове метода execute() для $my_Insert_Statement.
Обратите внимание, что мы повторно используем переменную $first_Name и задаём ей новое значение во второй раз. Если вы проверите свою базу данных после запуска этого скрипта, там будут оба заданных имени, даже если переменная $first_Name в конце скрипта равна “John”. Помните, что PHP оценивает содержимое всего скрипта перед его выполнением.
Если вы измените свой скрипт, заменив bindParam на bindValue, вы добавите в базу MySQL “Test Testing” дважды, а John Smith будет проигнорирован.
Проверка Статуса Выполнения и Устранение Распространённых Ошибок
Если запрос, который мы выполнили и вставили в базу данных MySQL, был успешным, мы увидим следующее сообщение:
Connect Successfully New record created successfully
Устранение Распространённых Ошибок
Если же запись содержит ошибку, вы увидите соответствующее сообщение. Но не волнуйтесь, есть множество вариантов, как можно устранить эти ошибки mySQL.
MySQLi
Если вы столкнулись с ошибкой, работая с MySQLi, причина скорее всего в неправильном синтаксисе. Для примера давайте сделаем одну синтаксическую ошибку в нашем коде. В результате мы увидим что-то вроде этого:
Connect successfully Error: INSERT INTO students VALUES ('Test', 'Testing', 'Testing@testing.com') You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' VALUES ('Test', 'Testing', 'Test@testingcom')' at line 1"
Как мы видим, первая часть кода в порядке, подключение было успешно установлено, но с нашим SQL-запросом не всё так гладко.
"Error: INSERT INTO Students VALUES ('Thom', 'Vial', 'thom.v@some.com') You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' VALUES ('Thom', 'Vial', 'thom.v@some.com')' at line 1"
Допущена синтаксическая ошибка, которая привела к невозможности выполнения нашего скрипта. Ошибка была допущена здесь:
$sql = "INSERT INTO Students VALUES ('Thom', 'Vial', 'thom.v@some.com')";
Мы использовали фигурные скобки вместо простых. Поскольку это неправильно, наш скрипт выдал синтаксическую ошибку.
PDO
В строке 7 подключения PDO, режим обработки ошибок установлен в «display all exceptions» (отображать все исключения). Если вы уберёте это из скрипта и запрос потерпит неудачу, вы не получите никакого сообщения об ошибке. Со включёнными исключениями, будут отображаться конкретные возникшие проблемы.
Тем не менее этот режим лучше использовать при разработке скриптов, так как в случае попытки получить несанкционированный доступ к вашим данным он может выявить имена баз данных и таблиц. Если же причиной стала синтаксическая ошибка, как в примере с фигурными скобками, сообщение будет выглядеть примерно так:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' VALUES ('Thom', 'Vial', 'thom.v@some.com')' at line 1"
Другие проблемы, с которым вы можете столкнуться:
- Неверно указаны столбцы (несуществующие столбцы или ошибки в написании названий).
- Несоответствие типа значения типу столбца. Например, когда мы хотим присвоить числовое значение 47 полю Name, мы получим ошибку, потому что предполагается, что значение будет строкой. Но, если вы укажете число в кавычках, например, “47”, ошибки не будет, потому что наше число будет записано как строка в этот столбец.
- Попытка ввести данные в таблицу, которой не существует или ошибка в написании названия таблицы.
Все эти ошибки могут быть исправлены, следуя руководствам по исправлению ошибок или журнала ошибок (англ.).
В случае успешного добавления, наши данные должны появиться в базе. Вот пример таблицы, в которую мы добавили данные, если смотреть в phpMyAdmin.

Заключение
Уверенны, что знание того, как происходит добавление записи в таблицу MySQL пригодится, как тем, кто только учится программировать, так и начинающим разработчикам. В этом руководстве вы узнали, как использовать PHP для добавления записей в базу данных MySQL с использованием MySQLi и PDO. Мы также рассмотрели распространённые ошибки и их решения.
Елена имеет профессиональное техническое образование в области информационных технологий и опыт программирования на разных языках под разные платформы и системы. Более 10 лет посвятила сфере веб, работая с разными CMS, такими как: Drupal, Joomla, Magento и конечно же наиболее популярной в наши дни системой управления контентом – WordPress. Её статьи всегда технически выверены и точны, будь то обзор для WordPress или инструкции по настройке вашего VPS сервера.
Запрос SQL для вставки нескольких записей (INSERT)
Помимо вставки одной записи, SQL позволяет выполнить запрос для добавления сразу группы строк в таблицу. Такой запрос будет выполняться гораздо быстрее, чем последовательное добавление по одной записи.
Этот запрос выглядит подобно запросу добавления одной записи. Отличие только в том, что указывается несколько групп данных для вставки в таблицу разделенных запятой:
INSERT INTO таблица(список полей) VALUES (список добавляемых значений 1), (список добавляемых значений 2), . (список добавляемых значений N)
Каждая из таких групп указывается в отдельных скобках.
Например, вставка товаров в таблицу:
INSERT INTO goods(title, price) VALUES ("Вилка", 25), ("Столовая ложка", 35), ("Чайная ложка", 30)
Такой запрос добавит в таблицу три записи с соответствующими значениями.
Все остальные правила, такие как порядок указания или обязательность полей сохраняются так же, как и для вставки одной записи в таблицу БД.
Как сделать запись в таблицу sql
Сразу после создания таблицы она не содержит никаких данных. Поэтому, чтобы она была полезна, в неё прежде всего нужно добавить данные. По сути данные добавляются в таблицу по одной строке. И хотя вы конечно можете добавить в таблицу несколько строк, добавить в неё меньше, чем строку, невозможно. Даже если вы указываете значения только некоторых столбцов, создаётся полная строка.
Чтобы создать строку, вы будете использовать команду INSERT . В этой команде необходимо указать имя таблицы и значения столбцов. Например, рассмотрим таблицу товаров из Главы 5:
CREATE TABLE products ( product_no integer, name text, price numeric );
Добавить в неё строку можно было бы так:
INSERT INTO products VALUES (1, 'Cheese', 9.99);
Значения данных перечисляются в порядке столбцов в таблице и разделяются запятыми. Обычно в качестве значений указываются константы, но это могут быть и скалярные выражения.
Показанная выше запись имеет один недостаток — вам необходимо знать порядок столбцов в таблице. Чтобы избежать этого, можно перечислить столбцы явно. Например, следующие две команды дадут тот же результат, что и показанная выше:
INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99); INSERT INTO products (name, price, product_no) VALUES ('Cheese', 9.99, 1);
Многие считают, что лучше всегда явно указывать имена столбцов.
Если значения определяются не для всех столбцов, лишние столбцы можно опустить. В таком случае эти столбцы получат значения по умолчанию. Например:
INSERT INTO products (product_no, name) VALUES (1, 'Cheese'); INSERT INTO products VALUES (1, 'Cheese');
Вторая форма является расширением PostgreSQL . Она заполняет столбцы слева по числу переданных значений, а все остальные столбцы принимают значения по умолчанию.
Для ясности можно также явно указать значения по умолчанию для отдельных столбцов или всей строки:
INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', DEFAULT); INSERT INTO products DEFAULT VALUES;
Одна команда может вставить сразу несколько строк:
INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99), (2, 'Bread', 1.99), (3, 'Milk', 2.99);
Также возможно вставить результат запроса (который может не содержать строк либо содержать одну или несколько):
INSERT INTO products (product_no, name, price) SELECT product_no, name, price FROM new_products WHERE release_date = 'today';
Это позволяет использовать все возможности механизма запросов SQL (см. Главу 7) для вычисления вставляемых строк.
Подсказка
Когда нужно добавить сразу множество строк, возможно будет лучше использовать команду COPY . Она не такая гибкая, как INSERT , но гораздо эффективнее. Дополнительно об ускорении массовой загрузки данных можно узнать в Разделе 14.4.
| Пред. | Наверх | След. |
| Глава 6. Модификация данных | Начало | 6.2. Изменение данных |
