редактирование записей в mysql через php
MnogoBlog
как создать сайт на wordpress, настроить и оптимизировать wordpress
Создаём и редактируем таблицы MySQL с помощью PHP
Здравствуйте, сегодня будем создавать таблицу MySQL, заполнять её данными, научимся извлекать данные из таблицы, изменять их и удалять.
Для тестирования нижеуказанного кода можно использовать плагин – Hello (скачать данный плагин по этой ссылке) – в нем нижеуказанный код закомментирован (с помощью /* и */).
Можете установить и активировать плагин hello, далее зайти в админке в пункт “Плагины”, подпункт “Редактор”, выбрать плагин hello, разкомментировать нужный код и протестировать изменения с помощью phpMyAdmin.
Грамотно разработанный сайт залог успеха Вашего бизнеса в Сети. Чтобы создать сайт, который будет корректно представлять ваш бренд нужно обратиться к профессионалам своего дела –
здесь на базе платформы «1С-Битрикс» Вам помогут создать и осуществить продвижения сайта любой сложности.
1. Создаём таблицу MySQL:
1.1. Подключаемся к базе данных MySQL:
Вот мой тестовый сайт со следующими данными:
Вставляем данные в код и получим следующее:
1.2. Добавим новую таблицу в существующую базу данных MySQL:
Создадим новую таблицу “store_details”.
В таблице будет 4 столбца:
ID – этот столбец будет первичным ключом для таблицы
store_name
store_owner
store_country
Для столбца ID будет использоваться целочисленный тип данных (тип int), в то время как остальные столбцы будут установлены на строковый тип данных, а именно – varchar(255) – по желанию можете установить другие типы.
Vы добавили таблицу с названием store_details в нашу базу данных MySQL, теперь если мы зайдем в phpMyAdmin:
, то увидим, что появилась новая таблица store_details:
, давайте же приступим к её наполнению.
2. Вставляем данные в таблицу базы данных MySQL с помощью PHP:
2.1. Проверяем подключение к базе данных:
2.2. Вставляем данные в таблицу:
Добавим в таблицу store_details новую строку со следующими данными для столбцов:
MyShop (столбец store_name)
Kostya (столбец store_owner)
Russia (столбец store_country)
Первый столбец (“ID”) оставим без изменений – он будет заполняться автоматически.
Код, который мы будем использовать:
Каждый новый php запрос будет создавать новую строку в таблице.
Давайте запустим вышеуказанный код несколько раз и посмотрим, что получится.
Заходим в phpMyAdmin, выбираем нашу таблицу – store_details
Как видим у нас создалось несколько одинаковых строк.
3. Как извлечь данные из таблицы MySQL:
Теперь, когда мы уже знаем: как создать новую таблицу в MySQL и как вставить данные в таблицу – давайте попробуем извлечь данные из определенной строки. Для этого мы будем использовать значение столбца таблицы в качестве условия.
Наша таблица store_details выглядит следующим образом:
Предположим, что мы знаем название нашего магазина – “MyShop” и хотим вывести имя владельца магазина (столбец store_owner) и страну магазина (столбец store_country).
Мы будем использовать имя магазина (“MyShop”) в качестве условия для поиска по таблице – условие будет выглядеть так:
“найти строку со столбцом “store_name” в значении MyShop” и получить значения для других столбцов в этой строке”.
3.1. Проверяем подключение к базе данных:
3.2. Извлекаем значения из таблицы MySQL
А далее с помощью конструкции echo мы вывели их значения на экран.
4. Изменяем значения столбцов в конкретной строке таблицы:
4.1. Проверяем подключение к базе данных:
4.2. Меняем значение столбцов в конкретной строке таблицы:
Для напримера, давайте для первой строки поменяем собственника магазина (store_owner) с Kostya на Mnogoblog.
5. Удаляем запись таблицы:
5.1. Проверяем подключение к базе данных:
5.2. Удаляем запись таблицы:
В данном примере, обработчик удалит запись с идентификатором «id», равным “2”.
На этом всё! Красивых и успешных Вам сайтов!
UPDATE. Редактирование записей в таблице базы данных MySQL
Команда UPDATE
Часто возникает необходимость изменения информации, хранящейся в базе данных. С помощью команды UPDATE вы сможете обновлять данные одной или нескольких колонок в каждой записи таблицы.
Синтаксис запроса на обновление данных.
Для примера заполним таблицу books для хранения книг из условной базы данных Bookstore, которую мы создали в одном из предыдущех постов.
Сначала выберем базу данных, для которой будем выполнять запросы.
Посмотрим какие данные сейчас хранятся в колонках id, title, author, price, discount, amount таблицы books для первых 5 записей.
mysql> SELECT id, title, author, price, discount, amount FROM books LIMIT 5;
+—-+—————————+——————-+———+———-+———+
| id | title | author | price | discount | amount |
+—-+—————————+——————-+———+———-+———+
| 1 | Дубровский | Александр Пушкин | 230.00 | 0 | 4 |
| 2 | Нос | Николай Гоголь | 255.20 | 0 | 7 |
| 3 | Мастер и Маргарита | Михаил Булгаков | 240.50 | 0 | 10 |
| 4 | Мёртвые души | Николай Гоголь | 173.00 | 0 | 3 |
| 5 | Преступление и наказание | Фёдор Достоевский | 245.00 | 0 | 3 |
+—-+—————————+——————-+———+———-+———+
5 rows in set (0.00 sec)
Обновим цену, процент скидки и уменьшим количество на 2 для книги с идентификатором 3.
Теперь проверим как обновились данные.
mysql> UPDATE books
-> SET price=263.00, discount=10, amount=amount-2
-> WHERE id=3;
Query OK, 1 rows affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT id, title, author, price, discount, amount FROM books LIMIT 5;
+—-+—————————+——————-+———+———-+———+
| id | title | author | price | discount | amount |
+—-+—————————+——————-+———+———-+———+
| 1 | Дубровский | Александр Пушкин | 230.00 | 0 | 4 |
| 2 | Нос | Николай Гоголь | 255.20 | 0 | 7 |
| 3 | Мастер и Маргарита | Михаил Булгаков | 263.00 | 10 | 8 |
| 4 | Мёртвые души | Николай Гоголь | 173.00 | 0 | 3 |
| 5 | Преступление и наказание | Фёдор Достоевский | 245.00 | 0 | 3 |
+—-+—————————+——————-+———+———-+———+
5 rows in set (0.00 sec)
Обновление данных для нескольких записей в MySQL
Используя команду WHERE можно задавать сразу несколько записей для обновления данных.
Попробуем добавить скидку в 5% для всех книг под авторством Николая Гоголя, а также в название книги добавим слово «(Акция)».
Запрос на обновление данных, в этом случае, будет выглядеть так:
В результате получим следующие изменения.
mysql> UPDATE books
-> SET discount=5, title=CONCAT(title, » (Акция)» )
-> WHERE author= «Николай Гоголь» ;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> SELECT id, title, author, price, discount, amount FROM books LIMIT 5;
+—-+—————————+———————+———+———-+———+
| id | title | author | price | discount | amount |
+—-+—————————+———————+———+———-+———+
| 1 | Дубровский | Александр Пушкин | 230.00 | 0 | 4 |
| 2 | Нос (Акция) | Николай Гоголь | 255.20 | 5 | 7 |
| 3 | Мастер и Маргарита | Михаил Булгаков | 263.00 | 10 | 8 |
| 4 | Мёртвые души (Акция) | Николай Гоголь | 173.00 | 5 | 3 |
| 5 | Преступление и наказание | Фёдор Достоевский | 245.00 | 0 | 3 |
+———+—————————+———————+———+———-+———+
5 rows in set (0.00 sec)
В результате запроса выше получим одинаковую цену и название для всех книг в таблице.
mysql> UPDATE books SET price=103.90, title= «Барышня-крестьянка» ;
Query OK, 5 rows affected (0.00 sec)
Rows matched: 5 Changed: 5 Warnings: 0
mysql> SELECT id, title, author, price, discount FROM books LIMIT 5;
+—-+————————+———————+———+———-+
| id | title | author | price | discount |
+—-+————————+———————+———+———-+
| 1 | Барышня-крестьянка | Александр Пушкин | 103.90 | 0 |
| 2 | Барышня-крестьянка | Николай Гоголь | 103.90 | 5 |
| 3 | Барышня-крестьянка | Михаил Булгаков | 103.90 | 10 |
| 4 | Барышня-крестьянка | Николай Гоголь | 103.90 | 5 |
| 5 | Барышня-крестьянка | Фёдор Достоевский | 103.90 | 0 |
+—-+————————+———————+———+———-+
5 rows in set (0.00 sec)
Как обновить записи в таблице базы данных MySQL с помощью PHP (PDO)
Перед созданием формы мы обратимся к нашей таблице books и выведем данные, которые в ней хранятся, просто для того чтобы видеть, что содержит таблица и не редактировать ее вслепую.
Website-create.ru
Продолжаем серию уроков по работе с базами данных MySql. В этом уроке мы научимся редактировать информацию в базе данных MySql прямо из веб страницы.
Такие возможности могут Вам понадобиться, когда Вы предоставляете пользователю Вашего ресурса заполнять свой профиль, а также редактировать его. Также эти знания пригодятся, если Вы пишите администраторский раздел для сайта и хотите иметь возможность редактирования записей не заходя в базу данных.
В прошлых уроках мы создали базу данных MySql, заполнили ее, создали код для вывода информации из базы, а также для внесения новых записей в базу прямо из веб страницы.
В данном уроке я продолжу использовать уже имеющуюся структуру файлов. Все файлы данного урока есть в исходниках к этому уроку.
Итак, давайте начнем!
Редактируем запись в базе данных MySql из веб страницы.
Что нам нужно сделать?
1. Создаем кнопку, которая будет запрашивать все записи из базы.
2. Создать файл, в котором списком будут выводиться все имеющиеся в базе данных записи (для того, чтобы выбрать ту, которую хотим редактировать).
3. При выборе определенной записи в работу включается файл-обработчик, который забирает из базы данных всю информацию по нужной нам записи.
4. Выбранная информация вставляется в поля формы для редактирования, которую мы создадим.
5. После редактирования, при помощи определенного SQL-запроса информация отправляется на обновление в базу данных MySql.
1. Первое, что мы сделаем – это создадим файл “select_change.php” и разместим его в том же каталоге, что и все наши основные файлы (то есть в основном каталоге).
Пока мы не начали с ним работать давайте откроем файлы: “search_user.html”, “info_form.html”, “select_user.php”, “all_users.php” и добавим ссылку на этот файл для того, чтобы он был доступен из всех файлов нашего приложения (это для удобства, чтобы каждый раз не прописывать его адрес в адресной строке, когда мы будем тестировать наши веб страницы).
Добавляем следующую строку в каждый из файлов перед закрывающим тегом body.
2. Теперь откроем сам файл “select_change.php”. Мы будем выводить только имя и фамилию из базы для выбора пользователя, информацию о котором мы хотим редактировать.
Для этого сначала мы сформируем запрос к базе данных, который скажет выбрать все записи из базы, а затем выведем списком имена и фамилии каждого человека.
Выводить данные мы будем как радиокнопки. Это мы делаем для того, чтобы можно было выбрать пользователя (притом только одного).
Из базы мы будем запрашивать только 3 параметра: это id, first_name, last_name. Последние два будут выводиться на экран для того чтобы мы могли определиться какую информацию из базы данных будем редактировать. Параметр же id будет невидим (он будет значением атрибута value), но он необходим для того, чтобы программа могла идентифицировать в базе данных выбранный элемент (фамилии и имена могут повторяться, а id всегда индивидуален).
Обратите также внимание на способ вывода информации в этом файле. Вы можете увидеть такие символы как %s.
Принцип здесь такой: в двойных кавычках в функции “printf” выводится html код, вместо определенной переменной (например, такой как “$row[‘first_name’]”) мы ставим якоря — %s. А после того как закрылись двойные кавычки, мы перечисляем эти переменные, соответствующие поставленным якорям. Это удобно, когда работаешь с функцией “printf”, однако следует следить за порядком якорей и перечисляемых переменных, так как они будут подставлены именно в том порядке, в котором Вы их перечисляете.
Все это заключено в тег формы, в которой action=»edit.php». Файл edit.php мы создадим в следующем шаге.
Итак, код нашего файла “select_change.php” будет выглядеть следующим образом:
А если загрузить страницу в браузере, то можно увидеть примерно следующее:
3. Создайте файл “edit.php” и поместите его там же в основном каталоге.
Этот файл является файлом-обработчиком нашего предыдущего файла. В нем будет выводиться форма и автоматически заполняться информацией из базы данных MySql той записи, которую мы выбрали.
Кроме того, в этой форме можно будет изменить один или несколько параметров (например, имя, фамилию и т.д.).
Во-первых, программа должна понимать, какую запись Вы от нее требуете. А для этого должен быть передан параметр id. Имя для input в прошлом файле мы дали — ”user”, там же у нас хранится в атрибуте value нужный id. А следовательно получить его можно запросив при помощи “$_REQUESR[‘user’]”. И далее занести результат в переменную ”$id”.
Во-вторых, нужно сформировать запрос, который будет выводить из нашей таблицы базы данных всю информацию о записи с указанным идентификатором.
В-третьих, нужно исполнить этот запрос и вывести каждый параметр в предусмотренное для него поле (в атрибутах value).
Вот код всего вышеописанного:
Обратите внимание, что у нашей формы action=’scripts/update.php’. Этот файл мы создадим в следующем шаге.
Также обратите внимание на то, что параметр id также передается, но мы его не увидим, так как ему присвоен type=’hidden’. Передать его нужно, но лучше не давать возможности его менять, чтобы не допустить ошибок.
А вот и результат, которого мы пока что достигли:
4. Что же, осталось совсем немного!
Нужно создать файл update.php и положить его в папку со скриптами.
Что будет делать данный файл?
Он получит из предыдущего файла все введенные значения и каждое занесет в переменную.
Потом он сформирует запрос к базе данных, в котором попросит обновить запись с учетом переданного идентификатора, подставив в соответствующее поле соответствующую переменную.
После он отправит запрос на исполнение и выведет нам результат в виде текстового сообщение (либо все прошло хорошо, либо произошла ошибка).
Вот код этого файла:
А вот и результат работы этого скрипта:
Итак, на данный момент (если Вы прошли все 4 урока этой серии) у Вас есть приложение, с помощью которого Вы можете добавлять новые записи в базу данных, выводить их в списке, либо искать и выводить по нужным имени и фамилии, а также редактировать уже имеющиеся записи.
Согласитесь, не мало. И все это не заходя в саму базу. Все происходит из веб страниц.
В следующем уроке я расскажу Вам как удалять, выбранные записи из базы данных.
Если Вы еще не подписались на обновление блога, то обязательно подписывайтесь, чтобы не пропустить новые уроки.
Работа с MySQL в PHP
PHP поддерживает работу с базой данных MySQL.
Специальные встроенные функции для работы с MySQL позволяют просто и эффективно работать с этой СУБД: выполнять любые запросы, читать и записывать данные, обрабатывать ошибки.
Сценарий, который подключается к БД, выполняет запрос и показывает результат, будет состоять всего из нескольких строк. Для работы с MySQL не надо ничего дополнительно устанавливать и настраивать; всё необходимое уже доступно вместе со стандартной поставкой PHP.
Что такое mysqli?
mysqli (MySQL Improved) — это расширение PHP, которое добавляет в язык полную поддержку баз данных MySQL. Это расширение поддерживает множество возможностей современных версий MySQL.
Как выглядит работа с базой данных
Типичный процесс работы с СУБД в PHP-сценарии состоит из нескольких шагов:
Функция mysqli connect: соединение с MySQL
Но чтобы выполнить соединение с сервером, необходимо знать как минимум три параметра:
Базовый синтаксис функции mysqli_connect() :
Проверка соединения
Первое, что нужно сделать после соединения с СУБД — это выполнить проверку, что оно было успешным.
Эта проверка нужна, чтобы исключить ошибку при подключении к БД. Неверные параметры подключения, неправильная настройка или высокая нагрузка заставит MySQL отвеграть новые подключения. Все эти ситуации приведут к невозможности соединения, поэтому программист должен проверить успешность подключения к серверу, прежде чем выполнять следующие действия.
Соединение с MySQL и проверка на ошибки:
Функция mysqli_connect_error() просто возвращает текстовое описание последней ошибки MySQL.
Установка кодировки
Первым делом после установки соединения крайне желательно явно задать кодировку, которая будет использоваться при обмене данными с MySQL. Если этого не сделать, то вместо записей со значениями, написанными кириллицей, можно получить последовательность из знаков вопроса: ‘. ’.
Вызови эту функцию сразу после успешной установки соединения: mysqli_set_charset($con, «utf8»);
Выполнение запросов
Установив соединение и определив кодировку мы готовы выполнить свои первые SQL-запросы. Вы уже умеете составлять корректные SQL команды и выполнять их через консольный или визуальный интерфейс MySQL-клиента.
Те же самые запросы можно отправлять без изменений и из PHP-сценария. Помогут в этом несколько встроенных функций языка.
Два вида запросов
Следует разделять все SQL-запросы на две группы:
При выполнении запросов из среды PHP, запросы из второй группы возвращают только результат их исполнения: успех или ошибку.
Запросы первой группы при успешном выполнении возвращают специальный ресурс результата. Его, в свою очередь, можно преобразовать в ассоциативный массив (если нужна одна запись) или в двумерный массив (если требуется список записей).
Добавление записи
Вернёмся к нашему проекту — дневнику наблюдений за погодой. Начнём практическую работу с заполнения таблиц данными. Для начала добавим хотя бы один город в таблицу cities.
Выражение INSERT INTO используется для добавления новых записей в таблицу базы данных.
Функция insert id: как получить идентификатор добавленной записи
Теперь у нас есть всё необходимое, чтобы добавить погодную запись.
Вот как будет выглядеть комплексный пример с подключением к MySQL и добавлением двух новых записей:
Чтение записей
В этом примере показано, как вывести все существующие города из таблицы cities:
Чтобы получить действительные данные, то есть записи из таблицы, следует использовать другую функцию — mysqli_fetch_array() — и передать ей единственным параметром эту самую ссылку.
Теперь каждый вызов функции mysqli_fetch_array() будет возвращать следующую запись из всего результирующего набора записей в виде ассоциативного массива.
Цикл while здесь используется для «прохода» по всем записям из полученного набора записей.
Значение поля каждой записи можно узнать просто обратившись по ключу этого ассоциативного массива.
Как получить сразу все записи в виде двумерного массива
Иногда бывает удобно после запроса на чтение не вызывать в цикле mysqli_fetch_array для извлечения очередной записи по порядку, а получить их сразу все одним вызовом. PHP так тоже умеет. Функция mysqli_fetch_all($res, MYSQLI_ASSOC) вернёт двумерный массив со всеми записями из результата последнего запроса.
Перепишем пример с показом существующих городов с её использованием:
Как узнать количество записей
Работа с базами данных SQL в PHP для новичков
Учебник PHP
Практика
Важное
Регулярки
Работа с htaccess
Файлы, папки
Сессии и куки
Работа с БД
Практика по работе с БД в PHP
Перед чтением см. новые уроки раздела «Важное», которые появились выше.
Практика
Движок PHP
Продвинутые БД
Аутентификация
Практика
ООП и MVC
Абстрактные классы и интерфейсы
Трейты
ООП Магия
Практика
Практика: классы как набор методов
Что такое база данных
Это могут быть тексты страниц, списки пользователей с их логинами и паролями, каталоги продукции и другое.
База данных состоит из таблиц. Что такое таблица вы знаете из жизни: это строки и столбцы. А на пересечении строк и столбцов располагаются ячейки.
В базах данных столбцы часто называют полями.
PhpMyAdmin
Для редактирования баз данных часто пользуются программой PhpMyAdmin.
Видео на PhpMyAdmin
Задачи на PhpMyAdmin
Давайте откроем PhpMyAdmin и приступим к изучению его интерфейса.
Чтобы вам было проще с ним освоится, сделайте следующие практические задачи:
AUTO_INCREMENT
Обратите внимание на то, что мы создали поле id и поставили ему галочку AUTO_INCREMENT. Это очень важный шаг!
Теперь при вставке новой записи (строки) в таблицу это поле будет заполняться автоматически уникальным номером.
При этом если мы удалим строку с каким-то id (например 1), то такого id больше никогда не будет.
Зачем нужно поле id?
Затем, чтобы мы всегда могли обратиться к конкретной строке по ее id, например с целью удаления или редактирования.
Типы переменных
В SQL довольно много типов переменных, но чаще всего приходится пользоваться следующими:
Как работать с mySQL через PHP
Работа с БД из PHP осуществляется всего лишь с помощью трех функций:
Далее подробнее про каждую из функций.
Устанавливаем соединение с БД
Данный материал есть также в виде видео: https://youtu.be/J8GFuyA_k_8
Прежде, чем начать работать с базой данных из PHP, нужно установить соединение с сервером, на котором эта база находится.
Делается это с помощью функции PHP mysql_connect, которая принимает 3 параметра: имя хоста (сервера), имя пользователя, под которым мы работаем с базой и пароль для этого пользователя.
Давайте установим соединение с базой данных:
Посылаем запросы к базе данных
Это относиться к командам SELECT, UPDATE, FROM, DELETE, WHERE и другим такого рода.
Конечно, синтаксической ошибки не будет, если вы напишите их маленькими буквами, но принято большими.
Отлавливаем ошибки базы данных
Многие начинающие зачастую не умеют отлавливать ошибки, которые вернула база данных.
Чтобы вывести ошибки, следует пользоваться конструкцией or die ( mysqli_error($link) ), которую необходимо добавлять к каждому запросу к БД.
Таким образом вы сразу будете получать сообщения об ошибках синтаксиса SQL. Обратите внимание на то, что на рабочем сайте эти конструкции следует удалять, чтобы пользователи и тем более хакеры не видели ошибок БД.
Проблемы с кодировками
Чтобы не было проблем с кодировками следует придерживаться простых правил:
Начнем практиковаться
Сейчас мы с вами начнем изучить SQL запросы на практике. Для этого нам понадобится тестовая таблица в базе данных, заполненная некоторыми данными. Сейчас мы с вами ее сделаем и заполним.
Итак, создайте свою первую базу данных с помощью PhpMyAdmin.
Создайте в этой базе новую таблицу.
Назовите ее «workers» (англ. работники).
В ней создайте 4 столбца (столбцы по другому называются поля):
Ее заполните тестовыми данными, как показано в таблице ниже (этот шаг обязателен, так как дальше все задачи будут по этой таблице):
id | name | age | salary |
---|---|---|---|
1 | Дима | 23 | 400 |
2 | Петя | 25 | 500 |
3 | Вася | 23 | 500 |
4 | Коля | 30 | 1000 |
5 | Иван | 27 | 500 |
6 | Кирилл | 28 | 1000 |
Тестируем работоспособность
Просто скопируйте этот код и запустите его у себя:
В таком случае проверьте все еще раз, уберите последовательно все ошибки PHP, если таковые есть.
Как достать результат
После того, как мы сделали запрос к базе, в переменной $result будет лежать результат этого действия.
Однако лежит он не в той форме, которая нам нужна в PHP, а в той форме, в которой его прислала нам база.
Достать результат в нормальном виде (в массиве) можно с помощью следующего кода:
Как работает последняя строка?
Функция mysqli_fetch_assoc считывает последовательно каждую строку результата, который прислала нам база.
В цикле for мы считываем построчно результат из базы.
А результат из БД будет лежать в нормальном виде в массиве $data.