php mysql update примеры
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 и выведем данные, которые в ней хранятся, просто для того чтобы видеть, что содержит таблица и не редактировать ее вслепую.
Основы работы с PHP MySqli
В связи с прекращением поддержки PHP MySQL в 2011 году для работы с базами данных все более широкое применение находят PDO или MySqli. Они обладают лучшей функциональностью (чем MySQL) и предлагают ООП (объектно-ориентированный интерфейс) API. Какой из них лучше, это тема для другой статьи, в этой статье мы попытаемся разобраться с основами работы с MySqli. Поэтому, без дальнейших предисловий, перейдем к рассмотрению соединения ( connect ), выбора ( select ), вставки ( insert ), обновления ( update ) и удаления ( delete ) записей (данных/документов/информации) посредством PHP MySqli. Надеюсь, что данная статья будет полезна при решении проблем, которые могут возникнуть при работе с PHP MySqli.
Установка MySqli
Соединение с базой данных
MySqli предлагает два способа соединения с базой данных: процедурный и объектно-ориентированный. Рекомендуется использовать объектно-ориентированный. Процедурный похож на (старый) MySql, поэтому для новичков его использование, возможно, будет предпочтительней, стоит помнить, что им пользоваться не рекомендуется.
Ниже показано открытие соединения с базой данных объектно-ориентированным способом. Этот способ будет использоваться и во всех приведенных ниже примерах.
Выбор (SELECT) результирующего ряда в виде ассоциативного массива
mysqli_fetch_assoc() : в приведенном ниже коде происходит извлечение результирующего ряда в виде ассоциативного массива. Возвращаемый массив содержит строки, полученные из базы данных, где имена столбцов будут являться ключом, используемым для доступа к внутренним данным. Как показана ниже, данные отображаются в виде HTML таблицы.
Выбор (SELECT) результирующего ряда в виде массива (ассоциативный, обычный, или в оба)
Выбор (SELECT) результирующего ряда в виде объекта
Выбор (SELECT) одиночного значение
Одиночное значение получить из базы данных можно посредством fetch_object (метод Cameron Spear).
Извлекаем (SELECT COUNT) количество строк в таблице
Иногда нужно узнать количество строк в таблице, особенно при нумерации страниц.
Выбор (SELECT) с помощью шаблонов (prepared statements)
prepared statements — специальный инструмент СУБД, позволяющий ускорить последовательное выполнение повторяющихся запросов, построенных по одному и тому же шаблону.
Одной из особенностей MySqli является возможность использования уже написанных шаблонов: то есть запрос достаточно написать один раз, после чего его можно многократно исполнять с различными параметрами. Использование уже написанных шаблонов улучшает производительность для больших таблицах и сложных запросов. Для предотвращения попадания вредоносного кода анализ каждого запроса производится сервером отдельно.
Тот же запрос с несколькими параметрами:
Вставка (INSERT) записи
Запись ниже вставляет в таблицу новый ряд.
Отрывок ниже вставляет те же значения посредством шаблонов (Prepared Statement). Как мы уже говорили, шаблоны чрезвычайно эффективны против SQL инъекция. Для приведенного примера их использование является оптимальным вариантом.
Вставка (INSERT) нескольких записей
Обновление (Update)/удаление (Delete) записей
Принцип обновление и удаление записей тот же. Достаточно заменить строку запроса на MySql update или delete (не понял, сам смотри).
Обновление с помощью шаблонов (prepared statements)
Пример обновления записи с помощью шаблонов (prepared statements) приведен ниже.
Удаление старых записей
Удалению подвергаются все записи, находящиеся на сервере больше 1 дня; количество дней можно задать самому.
Заключение
Вне сомнения, MySqli существенно лучше стандартного MySql расширения PHP, хотя принципы их работы довольно схожи. Надеюсь, приведенная выше информация окажется полезной при создании и переносе проектов в будущем. Для удобства ниже была реализована возможность скачать файлы примеров. Это можно сделать, нажав на кнопку download.
11 основных примеров команды UPDATE в MySQL
Главное меню » Базы данных » База данных MySQL » 11 основных примеров команды UPDATE в MySQL
В этой статье мы расскажем, как использовать команду UPDATE в MySQL вместе с некоторыми полезными примерами.
Рассматриваются в данном руководстве следующие примеры:
Для этого урока мы будем использовать следующую таблицу worker в качестве примера. Это структура таблицы для примера.
В настоящее время таблица worker имеет следующие записи.
1. Обновление всех строк
В следующем простом примере, команда UPDATE будет установлено значение столбца DEPT к IT для всех строк в таблице worker.
Вывод команды UPDATE будет иметь следующие две строки:
Вот обновленные записи после вышеуказанной команды UPDATE.
2. Обновление только выбранных строк
Вместо того, чтобы обновить все записи, вы можете выборочно обновить определенные записи на основе условия WHERE.
В следующем примере будет обновлять таблицу сотрудников и назначить сотрудника, который имеют зарплату больше или равно 7000 для отдела маркетинга.
Были только две записи, которые соответствовали выше, таблица обновилась, как показано ниже.
Мы обсуждали много различных практических условий WHERE в нашем учебнике MySQL по команде SELECT. Это очень полезно, чтобы понять, как использовать предложение WHERE эффективно во время UPDATE: 25 основных примеров в MySQL для команды SELECT.
3. Обновление значения столбца с выражением
При присвоении значения в столбце после SET, вы не всегда должны указывать статические значения. Вы также можете использовать выражения, как показано ниже.
Ниже приводится очень простое выражение, где оно увеличивает значение заработной платы на 500 для всех сотрудников отдела IT.
Были только 4 записи, которые соответствовали условию выше. Но только три записи были обновлены, как показано ниже, в качестве одного из записей сотрудников, который принадлежит к техническому отделу, имел нулевое значение в поле заработной платы. Таким образом, зарплата выше + 500 выражение по прежнему NULL, и не обновляется эта конкретную запись.
4. Использование ключевого слова DEFAULT в Update
Вместо того, чтобы указать статическое значение или выражение, вы также можете использовать ключевое слово “DEFAULT”, когда вы присваиваете значение столбца после SET.
Если вы посмотрите на вывод “DESC worker”, показанного ниже, вы увидите, что столбец с именем по умолчанию. Как вы видите там, зарплата имеет значение по умолчанию NULL. Отдел имеет значение по умолчанию продаж.
Во-первых, давайте обновим столбец зарплаты по умолчанию, используя ключевое слово DEFAULT, как показано ниже.
Затем обновите столбец отдела до значения по умолчанию, используя ключевое слово DEFAULT, как показано ниже.
Как видно из следующих выходных данных, мы можем видеть, что ключевое слово DEFAULT взял соответствующие значения по умолчанию из определения таблицы сотрудников, и использовали их, чтобы обновить его. Колонка Департамент получил обновление до продаж и зарплата обновлена до NULL, как показано ниже.
5. Обновление нескольких столбцов
В одном операторе обновления, вы также можете обновить значения для более чем одного столбца, как показано ниже.
В следующем примере, мы присваивая значения как зарплаты и столбца DEPT для всех записей, где идентификатор сотрудника больше 300.
Как видно из следующего вывода, вышеприведенная команда UPDATE обновляет два значения столбца в течение последних трех записей, которые соответствовали выше, когда выполняется условие.
Кроме того, помимо получения хорошую статьи на команде UPDATE в MySQL, очень полезно, чтобы понять все доступные операции MySQL INSERT: 12 основных примеров в MySQL для команды INSERT.
6. Ограничение колличества записей при обновлении
Мы также можем использовать опцию LIMIT, чтобы ограничить количество записей, которые должны быть обновлены.
Даже если условие, где соответствует несколько записей, оператор обновления будет обновлять только 1-е X количество записей, указанных в значении LIMIT.
В следующем примере мы присваиваем зарплату всех записей до 6500, так как мы не имеем WHERE. Но, мы используем LIMIT 3. Это означает, что она будет обновлять зарплату только первым трем записям для условия согласования.
Как видно из следующего выхода, только 1-е три записи обновляются предыдущей командой.
Одна вещь, чтобы иметь в виду, что LIMIT 3 на самом деле не означает, что обновление будет продолжать идти, пока он не обновит 3 записей. Вместо этого оператор обновления прекратит выполнение, как только он обработал первые 3 строки, которые соответствовали условию выполнения, независимо от того, были ли действительно обновлены эти записи или нет.
7. Многократное обновление таблиц (с помощью Inner Join)
Можно также объединить две таблицы во время обновления. Можно также обновить значения из двух таблиц одновременно с помощью одного оператора обновления.
В этом примере мы будем использовать в таблице следующие преимущества наряду с нашей существующей таблицей сотрудников.
Следующее утверждение обновление будет увеличивать значение столбца заработной платы из таблицы сотрудников к значению, указанному в таблице льгот для соответствующего столбца DEPT.
Это означает, что мы должны объединить оба работника и таблицу преимущества во время обновления, как показано ниже. Используйте общее поле между этими двумя таблицами в предложении WHERE. В этом примере общее поле dept.
Кроме того, сразу после ключевого слова UPDATE укажите имя обоих таблиц, как показано ниже. После ключевого слова SET можно указать либо имя одного или нескольких столбцов, которые должны быть обновлены, либо из одной таблицы, или как в таблице.
Обратите внимание, что в приведенном выше обновлении, мы используем внутреннее соединение.
Ниже приведен вывод после того, как приведенное выше утверждение обновление было выполнено. Как вы видите ниже, зарплата работника получила увеличивается на основе значений из таблицы выгоды.
8. Множественное обновление таблиц (с помощью Left Join)
Аналогично предыдущему примеру внутреннего соединения, мы можем также использовать левое соединение.
Когда мы используем внутреннее соединение, мы не указываем ключевое слово “inner join”, так как это по умолчанию при объединении нескольких таблиц.
Однако при использовании соединения слева мы должны явно указать “left join”, как показано ниже.
Вот выход после вышеуказанного обновления.
9. Возврат обновленного значения (или Pre-Update Value)
В MySQL в команде обновления, нет никакого прямого способа получения нового значения обновлений.
Например, в PostgreSQL, мы можем использовать что-то вроде этого: “UPDATE table_name SET column_name = expression WHERE condition RETURNING column_name”. В MySQL, мы не имеем возвращения как часть команды обновления MySQL.
Но, вы можете сделать следующее, чтобы получить возвращаемое значение внутри вашей процедуры, пакета, функции или из командной строки.
В приведенном выше примере, после того, как обновление будет сделано, переменная tmp_salary имеет обновленную зарплату от идентификатора сотрудника
Если вы хотите получить значение зарплаты, прежде чем обновление было сделано, очевидно, вы просто должны переключить последовательность из двух вышеупомянутых утверждений. В этом случае будет сначала SELECT, а затем UPDATE.
Или, вы можете использовать “@” в качестве части заявления UPDATE и получить предварительно обновленное значение, как показано ниже.
В приведенной выше команде обновления, после того, как обновление будет сделано, переменная tmp_salary имеет предварительно обновляемую зарплату для сотрудников ID 400. Как вы видите здесь, хотя значение заработной платы уже обновлено до 6000. Переменная tmp_salary, которая использовалась в приведенной выше команде UPDATE по-прежнему имеет значение 5500.
10. Случай объединения или IF с Update
Вы также можете использовать условные обновления MySQL с помощью условных команд, как CASE, IF и т.д. Это полезно для упрощения обновления.
Вместо того чтобы использовать несколько обновлений, вы можете просто обойтись с помощью одной команды UPDATE, которая сочетает в себе все ваши операции.
Например, скажем, у нас есть следующие три оператора обновления, которые обновляют поле заработной платы на основе значения из поля отдела.
Вы можете объединить все перечисленные выше заявления трех UPDATE в одном заявлении UPDATE используя условие CASE, как показано ниже.
Так же, как CASE, вы можете также использовать IF условие для обновления значения столбца соответственно.
11. Зачем использовать ORDER с пунктом Update?
Вы можете использовать значение ORDER BY во время обновления. Предложения ORDER BY, безусловно, имеет смысл во время SELECT. Но, зачем нам нужен ORDER BY во время обновления.
Скажем, у вас есть уникальный идентификатор и поле идентификатор сотрудника таблицы.
Когда вы выполните следующую команду, чтобы увеличить идентификатор сотрудника на 100, вы можете получить сообщение об ошибке дубликатом.
Это происходит потому, что, когда он пытается обновить значение идентификатора от 100 до 200, то уже есть существующая запись с идентификатором, как 200. Поле ID также имеет уникальный UNIQUE, в данном случае это является PRIMARY ключом. Таким образом, мы получаем вышеуказанную ошибку.
Для этого мы должны выполнить следующую команду с ORDER BY с идентификатором Desc.
В приведенном выше случае, сначала начните с максимального идентификатора сотрудника, обновлять эту запись, а затем переходить к следующему. Таким образом, он никогда не будет иметь сценарий повторяющегося значения в процессе обновления.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Основы PHP и MySQL — Операторы выборки (SELECT), вставки (INSERT), обновления (UPDATE) и удаления (DELETE) информации из базы данных
В этой статье мы на примерах разберем такие очень важные моменты в работе с базами данных MySQL (БД), как выборка из базы данных, запись в базу данных, обновление информации в базе данных, а также ее удаление из базы данных. Все это будет производиться при помощи четырех операторов PHP – операторов SELECT, INSERT, UPDATE и DELETE о которых и пойдет речь в данной статье.
В предыдущей статье про основы работы с базами данных мы рассмотрели, как создавать базы данных через phpMyAdmin и заносить в них информацию, а также как подключаться к БД через PHP. Теперь давайте перейдем к следующему этапу в изучении PHP и MySQL и рассмотрим, как вытащить информацию из базы данных при помощи PHP или другими словами сделать выборку из БД.
Как сделать выборку из базы данных. Оператор выборки SELECT
Перед тем как производить выборку из базы данных, первым делом нужно подключиться к MySQL серверу и выбрать базу данных для работы. Как вы уже знаете из предыдущей статьи рубрики «Уроки PHP и MySQL», делается это следующим образом.
После соединения с MySQL сервером и выбора базы данных можно приступить непосредственно к выборке из БД. Для примера возьмем базу данных, которую мы создавали в предыдущей статье. Напомню, что была создана база данных с именем db_name и одной таблицей first_table, в которой было всего три поля: id (идентификатор), name (имя), last_name (фамилия). Для того чтобы произвести выборку из базы данных можно использовать функцию mysql_query(), которая в данном случае имеет следующий синтаксис.
Если говорить простыми словами, то данный код расшифровывается как «ВЫБРАТЬ поля (перечисляем названия через запятую) ИЗ таблицы (указываем имя таблицы БД) ГДЕ выполняется условие (прописываем условие)». Как видите синтаксис функции очень простой, а сам код похож на обычный человеческий язык.
Поскольку функция mysql_query() возвращают результат, то его нужно поместить в какую-то переменную для дальнейшего использования, например, в переменную $result.
Теперь результат выполнения функции mysql_query() хранится в переменной $result и может быть использован, например, для формирования массива и вывода результатов на экран. Более подробно об этом мы поговорим чуть позже, ну а пока перейдем к примерам. В качестве базы данных для примера будем использовать базу db_name из предыдущей статьи.
Итак, если нужно вытащить все поля из базы данных используем следующий код.
Звездочка означает, что нужно вытащить все поля из таблицы.
Если нужно вытащить только некоторые поля, например, имя и фамилию.
name, last_name – поля с именами и фамилиями пользователей.
Если же нам нужно получить записи, где выполняется одно условие из нескольких, например, получить идентификаторы всех пользователей у которых имя или фамилия отвечают заданным в условиях.
Если вам нужно отсортировать результат по каким-то параметрам, например, по имени.
ORDER BY name – отсортировать по имени.
Если нужно отсортировать в обратном порядке.
DESC – в обратном порядке.
Если нужно вытащить только определенное количество полей из базы данных. К примеру, нужно вытащить первые пять полей.
LIMIT 5 – вытащить из БД только первые пять результатов.
Это были небольшие примеры выборки из базы данных. Теперь давайте рассмотрим, как преобразовать полученный результат в массив для дальнейшего использования, например, для вывода результата на экран. Для этого в PHP существует специальная функция PHP mysql_fetch_array().
Как видите все очень просто и понятно.
Ну а теперь перейдем к следующему оператору INSERT, который отвечает за добавление информации в базу данных.
Добавление информации в базу данных. Оператор INSERT
Оператор INSERT применяется для добавления информации в базу данных. Код, отвечающий за добавление, имеет следующий синтаксис.
Данный код можно было бы прочитать как «ВСТАВИТЬ В таблицу (имя таблицы) в поля (названия полей через запятую) ЗНАЧЕНИЯ (перечисляем значения через запятую)».
Например, нам нужно добавить в таблицу first_table имя и фамилию нового пользователя. Для этого можно использовать следующий код.
Для того чтобы проверить результат можно использовать конструкцию if – else.
Обновление информации в базе данных. Оператор UPDATE
Оператор UPDATE применяется для обновления уже существующей информации в базе данных. Синтаксис функции mysql_query в данном случае следующий.
Теперь давайте перейдем к заключительной части статьи и рассмотрим последний оператор DELETE, который отвечает за удаление информации из базы данных.
Удаление информации из базы данных. Оператор DELETE
Оператор DELETE применяется для удаления полей из базы данных. Синтаксис функции mysql_query() в данном случае следующий.
На этом данная статья подошла к концу. Материал не сложный, но объяснять его посредством текста достаточно сложно. Все же я думаю, вы поняли всю суть вышеизложенного материала. Если у вас остались какие-то вопросы по данной статье, вы всегда можете задать их в комментариях.
На этом все. Удачи вам и успехов в изучении PHP и MySQL.
Обновление данных в mysql таблице
Обновление данных в mysql таблице осуществляется операторами update и replace. При помощи оператора update обновляются поля в уже существующих записях, а оператор replace добавляет запись, но перед добавлением проверяет наличие записи с таким же значением индекса primary key или unique в таблице. Если совпадения по индексу есть, то предыдущая запись удаляется из таблицы.
Упрощенный синтаксис операторов update и replace имеет следующий вид:
update tbl_name set field1= expr1 [, field2 = expr2. ] [where condition]
replace [into] tbl_name [(field1, field2. )] values (expr1, expr2. )
Ниже будет продемонстрирована работа этих операторов на следующей таблице.
id | model | year | distance |
1 | Audi | 2005 | 1000 |
2 | Volvo | 2005 | 15000 |
3 | Fiat | 2003 | 12300 |
4 | Ford | 2002 | 54000 |
5 | Alfa Romeo | 2005 | 20000 |
В этом примере будет изменено поле year в строке с полем model равным Volvo
model: Audi
year: 2005
model: Volvo
year: 1998
model: Fiat
year: 2003
model: Ford
year: 2002
model: Alfa Romeo
year: 2005
Изменения можно также производить сразу над всем столбцом таблицы. Будет уменьшено значение столбца distance на 1000
model: Volvo
distance: 14000
model: Ford
distance: 53000
model: Fiat
distance: 11300
model: Audi
distance: 0
model: Alfa Romeo
distance: 19000
Здесь представлена работа оператора replace
model: Audi
model: Volvo
model: Fiat
model: Ford
model: Alfa Romeo
model: Mazda
Если код из третьего примера запустить еще раз, то таблица уже не изменится, так как поле id имеет unique индекс. Здесь запись с просто перезапишет само себя.