Как сделать запись в mysql
Запись данных в MySQL – чтобы песня кода звучала
Дата публикации: 2016-04-06
От автора: эх, из песни слов не выкинешь! Но их можно удалить, обновить или вставить другие. Главное, чтобы слова были внесены в базу данных. Сегодня мы расскажем, как происходит запись данных в MySQL и как это сделать правильно, чтобы песня звучала!
Добавление записей c помощью phpMyAdmin
В оболочке phpMyAdmin для администрирования СУБД MySQL реализован «облегченный» функционал добавления новый записей в таблицы базы данных. Из-за своей простоты он идеально подходит как для зеленых «чайников», так и для «ленивых» профессионалов.
Чтобы занести новую информацию в таблицу, следует зайти в программу под правами администратора. Затем в списках слева выбрать нужную базу и таблицу. После чего в верхнем меню перейти через пункт «Вставить».
После этого, чтобы внетсти запись в БД MySQL, заполняем в следующем окне для всех столбцов поля «Значение» и нажимаем внизу «Ок».
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
На приведенном выше скриншоте видно, что модифицируемая таблица «Animals» состоит из двух столбцов (полей): id и name. Во втором разделе указан тип каждого из столбцов. Нам нужно внести значение только для поля name, поскольку столбец id является первичным ключом, и для него при создании таблицы задан автоинкремент. Это значит, что значение поля id будет генерироваться MySQL автоматически, прибавляя к предыдущему целому числовому значению 1.
Чтобы узнать, какое поле записей данных в MySQL является первичным ключом (primary key), в phpMyAdmin перейдите меню (при выбранной таблице слева в списке) на вкладку верхнего меню «Структура». Здесь приводится описание всех полей таблицы, их тип и дополнительные характеристики.
Вставка данных с помощью SQL-запросов
Но phpMyAdmin – это всего лишь оболочка, а настоящие администраторы «общаются» с сервером MySQL с помощью языка структурированных запросов. То есть «разговаривают» с ним на языке SQL. Так как мы стремимся стать настоящими профессионалами, то немного «окунемся» в изучение команд SQL в рамках рассматриваемой темы. Вот запрос, введя который в поле «SQL», вы создадите такую же базу данных:
После создания таблицы и запись данных в базу MySQL (через вкладку «Вставить») программа сообщит вам, что в animals добавлена строка со значением идентификатора 1. А немного ниже в окне редактора будет выведен код запроса, который за нас сформировала оболочка и отослала серверу БД.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Обратите внимания, что столбцу id мы указываем не числовое значение, а NULL, поскольку для этого поля мы «включили» автозаполнение (автоинкремент).
Как вставить запись с помощью PHP
Все рассмотренное нами является лишь «прелюдией» к основному действу, в котором выходит на сцену «его высочество» серверный язык программирования PHP. Именно благодаря ему MySQL как СУБД получила такое распространение в Сети.
На связке этих двух интернет-технологий построена большая часть всемирной паутины. Куда ни гляньте, везде вы найдете их: в современных CMS, «самописных» движках и на сервере.
Не удивительно, что для записи данных в MySQL PHP предоставляет столько встроенных функций. Но мы остановимся на самых главных из ним. Вот код, который добавляет новое «животное» в таблицу animals. Если сильно постараться, то таким образом можно собрать целый зверинец:)
Этот код нужно вставить в файл PHP и разместить его на стороне сервера.
С помощью функции mysql_connect() мы коннектимся к серверу баз данных MySQL. В качестве аргументов функция принимает хост, имя пользователя СУБД, пароль и название базы, к которой нужно подключиться. У нас указан пустой пароль, поскольку мы используем сервер, установленный на локальной (клиентской) машине.
Для демонстрации всех описанных примеров записи в базу MySQL с помощью PHP мы применяли «джентельменский набор» от Денвера. В него входит локальный сервер Apache, сервер MySQL, phpMyAdmin и еще несколько полезных средств создания и тестирования программного кода.
Для его записи в MySQL PHP «любезно» предоставил весь необходимый набор функций. Главное, на чем «обжигаются» новички при использовании SQL в программном коде – это неправильное написание запросов, нарушение синтаксиса и чередования знаков для экранирования (кавычек).
Чтобы избежать появления на своей голове лишних «седых» волос, лучше проверять правильность написания запроса с помощью phpMyAdmin. Для этого разместите код SQL в редакторе программы и запустите его на выполнение. Если что-то не так, то приложение начнет «ругаться», выведет сообщение красного цвета и укажет месторасположение ошибки.
Как видите, с помощью MySQL можно и свой зверинец «собрать», и правильно изменить слова любой «песни». И для записи в базу MySQL PHP подходит идеально, поэтому мы советуем вам завести «тесную» дружбу с этим «великим» языком программирования!
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Как Сделать Запись в Базу Данных MySQL, Используя PHP-код
В этом руководстве вы узнаете, как происходит добавление записи в таблицу MySQL (INSERT) с использованием PHP. Мы рассмотрим два метода: MySQLi и PDO. Но прежде чем приступим непосредственно к реализации инструкции по добавлению записи с помощью PHP в базу даннных MySQL, нам понадобится доступ к панели управления хостингом.
Успейте получить огромную скидку на хостинг с поддержкой PHP! Ограниченное по времени предложение — скидки до 90%!
Если вы сомневаетесь или не знаете, как настроить подключение к MySQL, вы можете ознакомиться с этим руководством по PHPMySQL, которое охватывает наиболее важные этапы работы с PHP и базами данных.
Создание Таблицы (По необходимости)
Прежде всего, нам нужно создать таблицу для ваших данных. Если она у вас уже есть, смело переходите к следующему разделу. Процедура очень простая. Создать таблицу можно в phpMyAdmin из вашей панели управления хостингом.
После входа на страницу phpMyAdmin вы увидите подобную картину:
Давайте создадим таблицу с названием Students для нашей базы данных u104357129_name. Создать новую таблицу можно, нажав на кнопку Create Table. После этого вы увидите новую страницу со всеми необходимыми полями для ввода данных.
Поскольку создание таблицы не основная тема этого руководства, мы не будем углубляться в подробности. Если вам нужно больше информации о структуре таблицы/базы данных и о том, какие настройки вы можете использовать для каждого столбца, рекомендуем обратиться к официальной документации phpMyAdmin (англ.).
Здесь приведём лишь несколько простых пояснение столбцов, которые мы будем использовать:
Нажмите Save, чтобы сохранить вашу таблицу.
Создание PHP Кода и Добавление Записи в Таблицу MySQL (Insert)
Есть два способа вставить данные в вашу базу данных MySQL. Метод PHP MySQLi и PHP Data Object, или PDO.
Метод с MySQLi
Прежде всего, нужно установить соединение с базой данных. После этого мы можем продолжить с SQL запросом на добавление записи в таблицу MySQL — INSERT. Ниже показан полный пример PHP кода с методами подключения и вставки:
Первая часть кода (строки 3 – 18) касается подключения к базе данных. Мы не станем углубляться, так как у нас есть отдельное подробное руководство по этой теме. Если вы хотите знать, что означает каждая строка, читайте, как подключиться к базе данных.
Начнём со строки 19:
Это наиболее важная строка PHP кода, поскольку именно она отвечает за добавление записи в таблицу MySQL. INSERT INTO — это выражение, которое добавляет запись в указанную таблицу базы данных MySQL. В нашем примере мы добавляем данные в таблицу Students.
Двигаясь дальше, в скобках, мы указываем имена столбцов таблицы, в которые хотим добавить значения: (name, lastname, email). Данные будут добавлены в определённом порядке. Если мы напишем (email, lastname, name), значения будут добавлены в неправильном порядке.
Следующая часть — выражение VALUES. Здесь мы задаём наши значения в ранее указанные поля. Таким образом, каждый столбец получит своё значение. Например, в нашем случае это будет что-то вроде: name = Test, lastname = Testing, email = Testing@testing.com.
Следующая часть кода (20 – 22 строки) проверяет успешность нашего запроса:
Мы увидим это сообщение, если запрос выполнен успешно.
И последняя часть ( строки 22 – 24) демонстрирует пример другого сообщения.
Вы увидите подобное сообщение в случае возникновения ошибки при попытке отправить запрос.
Метод с PHP Data Object (PDO)
Как и в предыдущем примере, нам нужно прежде всего выполнить подключение к базе данных, которое производится при создании нового объекта PDO. Как это сделать, показано в уже не раз упомянутом руководстве. Поскольку подключение к базе данных MySQL является объектом PDO, мы должны использовать различные PDO методы (любую функцию, которая является частью любого объекта) для подготовки и запуска запросов. Методы объектов вызываются слудеющим образом:
PDO позволяет вам подготовить SQL-код перед его выполнением. Перед запуском SQL-запрос оценивается и корректируется. Не секрет, что взломщики могут модифицировать запрос. SQL-инъекция может быть осуществлена просто путём ввода SQL-кода в поле формы. Например:
Поскольку SQL-код синтаксически правильный, точка с запятой делает из DROP DATABASE user_table новый SQL-запрос, а ваша таблица пользователей удаляется. Подготовляемые запросы, также известные как связываемые переменные не позволят завершить запрос, использовав символы “ и ;. Как результат, вредоносная инструкция DROP DATABASE не будет выполнена.
Всегда используйте подготовляемые запросы, когда отправляете или получаете данные из базы данных с PDO
Чтобы использовать подготовляемые запросы, вы должны написать новую переменную, которая вызывает метод prepare() объекта базы данных.
В правильном виде код выглядит так:
В строках 28, 29 и 30 мы используем метод bindParam() объекта базы данных. Есть так же метод bindValue(), отличающийся от предыдущего.
Обратите внимание, что мы повторно используем переменную $first_Name и задаём ей новое значение во второй раз. Если вы проверите свою базу данных после запуска этого скрипта, там будут оба заданных имени, даже если переменная $first_Name в конце скрипта равна “John”. Помните, что PHP оценивает содержимое всего скрипта перед его выполнением.
Если вы измените свой скрипт, заменив bindParam на bindValue, вы добавите в базу MySQL “Test Testing” дважды, а John Smith будет проигнорирован.
Проверка Статуса Выполнения и Устранение Распространённых Ошибок
Если запрос, который мы выполнили и вставили в базу данных MySQL, был успешным, мы увидим следующее сообщение:
Устранение Распространённых Ошибок
Если же запись содержит ошибку, вы увидите соответствующее сообщение. Но не волнуйтесь, есть множество вариантов, как можно устранить эти ошибки mySQL.
MySQLi
Если вы столкнулись с ошибкой, работая с MySQLi, причина скорее всего в неправильном синтаксисе. Для примера давайте сделаем одну синтаксическую ошибку в нашем коде. В результате мы увидим что-то вроде этого:
Как мы видим, первая часть кода в порядке, подключение было успешно установлено, но с нашим SQL-запросом не всё так гладко.
Допущена синтаксическая ошибка, которая привела к невозможности выполнения нашего скрипта. Ошибка была допущена здесь:
Мы использовали фигурные скобки вместо простых. Поскольку это неправильно, наш скрипт выдал синтаксическую ошибку.
В строке 7 подключения PDO, режим обработки ошибок установлен в «display all exceptions» (отображать все исключения). Если вы уберёте это из скрипта и запрос потерпит неудачу, вы не получите никакого сообщения об ошибке. Со включёнными исключениями, будут отображаться конкретные возникшие проблемы.
Тем не менее этот режим лучше использовать при разработке скриптов, так как в случае попытки получить несанкционированный доступ к вашим данным он может выявить имена баз данных и таблиц. Если же причиной стала синтаксическая ошибка, как в примере с фигурными скобками, сообщение будет выглядеть примерно так:
Другие проблемы, с которым вы можете столкнуться:
Все эти ошибки могут быть исправлены, следуя руководствам по исправлению ошибок или журнала ошибок (англ.).
В случае успешного добавления, наши данные должны появиться в базе. Вот пример таблицы, в которую мы добавили данные, если смотреть в phpMyAdmin.
Заключение
Уверенны, что знание того, как происходит добавление записи в таблицу MySQL пригодится, как тем, кто только учится программировать, так и начинающим разработчикам. В этом руководстве вы узнали, как использовать PHP для добавления записей в базу данных MySQL с использованием MySQLi и PDO. Мы также рассмотрели распространённые ошибки и их решения.
Автор
Елена имеет профессиональное техническое образование в области информационных технологий и опыт программирования на разных языках под разные платформы и системы. Более 10 лет посвятила сфере веб, работая с разными CMS, такими как: Drupal, Joomla, Magento и конечно же наиболее популярной в наши дни системой управления контентом – WordPress. Её статьи всегда технически выверены и точны, будь то обзор для WordPress или инструкции по настройке вашего VPS сервера.
PHP и MySQL
Запросы MySQL с примерами: часть 2.
Введение
В первой части, основы MySQL и PHP, мы научились подключаться серверу MySQL, выбирать базу данных для работы, узнали PHP-функцию отправки запросов серверу MySQL, узнали два простейших запроса (создание и удаление таблицы), ну и узнали как закрывать соединение.
Теперь мы будем более глубоко изучать запросы MySQL. Итак, приступим!
Создание таблицы — CREATE TABLE
Сейчас у нас пустая база данных, в ней нет таблиц. Поэтому сначала создадим таблицу. Мы уже знаем как это делать из первой части.
Вот код скрипта, который создаст нужную нам табличку:
В нашей таблице только два поля: логин и пароль. Пока что нам больше не нужно, не будем усложнять процесс.
Итак, таблица создана.
Добавление строк (записей) в таблицу — INSERT
Добавить новую строку в таблицу можно при помощи SQL команды insert. Вот пример:
Синтаксис запроса выглядит так:
INSERT INTO имя_таблицы (столбец1, столбец2) VALUE (‘х1’, ‘х2’)
Кавычки во вторых скобках обязательны.
На месте значений могут быть переменные. Вот пример:
Конечно, в этом примере мало смысла. Возможно, новичкам будет полезно услышать, что так в базу данных записываются логины и пароли, которые сообщают пользователи при регистрации. Эти данные хранятся в переменных, потом, после проверки, записываются в базу.
Существует быстрый способ вставки нескольких строк одним запросом INSERT :
Как видим, перечисляемые данные просто отделены запятыми.
Итак, при помощи команды INSERT мы научились добавлять записи в таблицу. Идём дальше.
Просмотр таблицы: команда SELECT
Теперь у нас есть таблица users, в которой есть строки. Прошлый скрипт можно запустить несколько раз, и каждый раз он будет добавлять строку в таблицу. Теперь мы можем не знать, сколько у нас строк в таблице. А хочется знать что у нас в ней записано.
Запросим все данные из таблицы users:
Функция mysqli_query() вернула нам — мы его помещаем в переменную и в дальнейшем будем работать с ним при помощи других функций PHP.
Число записей в запросе
Давайте определим сколько строк в нашем запросе? Я вот запустил скрипт добавления записи в таблицу сам не помню сколько раз и теперь не знаю сколько строк в моей таблице.
Если нам нужно узнать число записей в таблице, то приведённый способ не самый подходящий. Тут мы узнали число записей, найденных в запросе, но число записей в таблице ищется по другому.
Число записей в таблице SELECT COUNT(*)
Обратите внимание, тут мы использовали новую функцию PHP mysqli_fetch_row() для получения данных. Эта функция возвращает ряд результата запроса в форме простого массива, в нашем случае в ряду одно поле и оно имеет индес 0.
Просмотр результата запроса в цикле
После выполнения SQL-запроса с командой SELECT и получения идентификатора результата запроса, PHP создаёт в наборе записей результата внутренний указатель. Этот указатель автоматически перемещается на следующую запись, после обращения к текущей записи. Благодаря этому механизму набор результа запроса SELECT очень удобно просматривать в цикле.
Итак, запрашиваем все данные из таблицы users ( SELECT * FROM users ).
Функция mysqli_fetch_row() возвращает простой массив. В каждой итерации цикла мы получим массив с строкой из таблицы, доступ к полям которой мы можем получить указав числовой индекс.
Также есть функции mysqli_fetch_array() — возвращает любой тип массива, и mysqli_fetch_object() — возвращает объект.
Запрос SELECT DISTINCT — уникальные значения полей
Давайте создадим новую таблицу:
Итак, мы имеем новую, более сложную таблицу с уникальными записями. Сейчас давайте посмотрим, сколько у нас имён в базе данных.
SQL-запрос » SELECT DISTINCT name FROM users » вернул результат со всеми уникальными именами в нашей таблице. Каждое уникальное имя в новой строке результата запроса.
Сортировка результата — ORDER BY
Добавив в SQL-запрос команду ORDER BY мы сортируем результат запроса по возрастанию (цифры и буквы по алфавиту). Вот пример, в котором можно сравнить обычный запрос и отсортированный по возрасту (поле age).
Можете заменить поле age в команде ORDER BY на поле name и посмотреть результат.
Соответствие условию — WHERE
Добавив в SQL-запрос команду WHERE мы запросим только те записи, которые соответствуют условию. Например, сделаем запрос на людей младше 30 лет.
Для этого используем SQL-запрос » SELECT * FROM users WHERE age «.
Также мы можем сразу отсортировать результат по возрастанию age:
» SELECT * FROM users WHERE age «.
Если мы сделаем запрос » SELECT name FROM users WHERE age «, то в результате нам вернут только значения поля «name», но они также будут отсортированы по age.
Мы можем запросить значения двух полей: » SELECT name, age FROM users WHERE age «.
Теперь запросим все пользователей, с именем «Max».
SELECT name FROM users WHERE name!=’Max’
На этом с запросом WHERE всё.
Ограничение записей — LIMIT
Добавив в SQL-запрос команду LIMIT мы ограничим размер результата.
Запрос, который выводит первые три записи: » SELECT * FROM users LIMIT 3 «. Давайте посмотрим как он работает:
Также тут мы использовали запрос: » SELECT * FROM users LIMIT 3, 3 «. Вторая тройка указывает смещение в результате запроса.
Соответствие шаблону — LIKE
Вот пример запроса, который вернёт все записи с именами, начинающимися на букву S.
SELECT * FROM users WHERE name LIKE ‘S%’
Вот пример запроса, который вернёт все записи с фамилиями, заканчивающимися на букву s.
SELECT * FROM users WHERE name LIKE ‘%s’
Соответствие условию — IN
Этот запрос с использованием команды IN вернёт только те строки, которые строго соответствую условию.
Например, нас интересуют люди с возрастом 21, 26 и 33 года.
SELECT * FROM users WHERE age IN (21,26,33)
Максимальное и минимальное значение в столбце
Выбирает максимальное значение age в таблице users.
SELECT max(age) FROM users
Следующий запрос выбирает данные из таблицы users по полям name и age где age принимает минимальное значение.
SELECT name, min(age) FROM users
Обновление записи — UPDATE
Давайте Max Lopes установим возраст 15 лет. Это делается запросом MySQL:
UPDATE users SET age=’15’ WHERE name=’Max’ AND surname=’Lopes’
Обратите внимание на новую команду AND (and — по английски значит «и») в запросе. Если мы не уточним фамилию, то возраст 15 лет будет установлен всем Максам в таблице.
Одним запросом можно обновить два и более полей в одной строке. Делается это следующим образом:
UPDATE users SET age = ’18’, surname = ‘Coocker’ WHERE
В нашей таблице нет поля id, так что этот запрос не сработает на ней. Но это поле, содержащее уникальные номера строк, мы обязательно выучим.
Удалить запись — DELETE
Запрос к базе данных MySQL для удаления записи:
DELETE FROM users WHERE
Опять же, в нашей таблице нет поля id. Но мы можем удалить из неё всех людей, младше 18 лет.
DELETE FROM users WHERE age
Удалить таблицу — DROP TABLE
Запрос к базе данных MySQL который удаляет целиком таблицу users:
Иногда может потребоваться удалить столбец из таблицы, давайте например удалим из users столбец age:
ALTER TABLE users DROP age
Этот запрос MySQL удалил столбец окончательно и безвозвратно.
Иногда может потребоваться добавить столбец в существующую таблицу, давайте например снова добавим в таблицу users столбец age:
ALTER TABLE users ADD age TINYINT UNSIGNED
Иногда может потребоваться переименовать столбец, например столбец age переименовать в vozrast. Делаем это так:
ALTER TABLE users CHANGE age vozrast TINYINT UNSIGNED
Иногда может потребоваться переименовать таблицу:
RENAME TABLE users TO peoples
Удаление базы данных — DROP DATABASE
Этот запрос может удалить базу данных с имененм tester:
DROP DATABASE tester
У меня на денвере этот запрос работает, но на хостинге может и не сработать, если у пользователя базы данных нет прав на выполнение удаления.
Создание базы данных — CREATE DATABASE
Этот запрос создаёт базу данных с имененм tester:
CREATE DATABASE tester
У меня на денвере этот запрос работает, но на хостинге может и не сработать, если у пользователя базы данных нет прав на выполнение удаления.
Итоги
Итак, в этой части мы ознакомились с запросами к MySQL. Многие из рассмотренных нами запросов нам не часто пригодятся в процессе работы, но знать их нужно, так как они точно пригодятся в процессе разработки скриптов.
Некоторые запросы обычно делают только из phpMyAdmin (создание и удаление баз данных например).
В работе сайтов обычно нужно добавить запись в таблицу, редактировать запись или удалить запись из таблицы.
Следующим шагом будет изучение типов данных в MySQL.