- MySQL — Update Query
- Syntax
- Updating Data from the Command Prompt
- Example
- Updating Data Using a PHP Script
- Syntax
- Example
- Output
- PHP MySQL Update Data
- Example (MySQLi Object-oriented)
- Example (MySQLi Procedural)
- Example (PDO)
- Php update value in table
- Объектно-ориентированный стиль
- Список пользователей
- Обновление пользователя
- Процедурный стиль
- Список пользователей
- Обновление пользователя
- Обновление данных в базе данных MySQL
- Обновление данных БД
- Пример
MySQL — Update Query
There may be a requirement where the existing data in a MySQL table needs to be modified. You can do so by using the SQL UPDATE command. This will modify any field value of any MySQL table.
Syntax
The following code block has a generic SQL syntax of the UPDATE command to modify the data in the MySQL table −
UPDATE table_name SET field1 = new-value1, field2 = new-value2 [WHERE Clause]
- You can update one or more field altogether.
- You can specify any condition using the WHERE clause.
- You can update the values in a single table at a time.
The WHERE clause is very useful when you want to update the selected rows in a table.
Updating Data from the Command Prompt
This will use the SQL UPDATE command with the WHERE clause to update the selected data in the MySQL table tutorials_tbl.
Example
The following example will update the tutorial_title field for a record having the tutorial_id as 3.
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> UPDATE tutorials_tbl -> SET tutorial_title = 'Learning JAVA' -> WHERE tutorial_id = 3; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql>
Updating Data Using a PHP Script
PHP uses mysqli query() or mysql_query() function to update records in a MySQL table. This function takes two parameters and returns TRUE on success or FALSE on failure.
Syntax
Required — SQL query to update records in a MySQL table.
Optional — Either the constant MYSQLI_USE_RESULT or MYSQLI_STORE_RESULT depending on the desired behavior. By default, MYSQLI_STORE_RESULT is used.
Example
Try the following example to update a record in a table −
Copy and paste the following example as mysql_example.php −
connect_errno ) < printf("Connect failed: %s
", $mysqli->connect_error); exit(); > printf('Connected successfully.
'); if ($mysqli->query('UPDATE tutorials_tbl set tutorial_title = "Learning Java" where tutorial_id = 4')) < printf("Table tutorials_tbl updated successfully.
"); > if ($mysqli->errno) < printf("Could not update table: %s
", $mysqli->error); > $sql = "SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl"; $result = $mysqli->query($sql); if ($result->num_rows > 0) < while($row = $result->fetch_assoc()) < printf("Id: %s, Title: %s, Author: %s, Date: %d
", $row["tutorial_id"], $row["tutorial_title"], $row["tutorial_author"], $row["submission_date"]); > > else < printf('No record found.
'); > mysqli_free_result($result); $mysqli->close(); ?>
Output
Access the mysql_example.php deployed on apache web server and verify the output. Here we’ve entered multiple records in the table before running the select script.
Connected successfully. Table tutorials_tbl updated successfully. Id: 1, Title: MySQL Tutorial, Author: Mahesh, Date: 2021 Id: 2, Title: HTML Tutorial, Author: Mahesh, Date: 2021 Id: 3, Title: PHP Tutorial, Author: Mahesh, Date: 2021 Id: 4, Title: Learning Java, Author: Mahesh, Date: 2021 Id: 5, Title: Apache Tutorial, Author: Suresh, Date: 2021
PHP MySQL Update Data
The UPDATE statement is used to update existing records in a table:
Notice the WHERE clause in the UPDATE syntax: The WHERE clause specifies which record or records that should be updated. If you omit the WHERE clause, all records will be updated!
To learn more about SQL, please visit our SQL tutorial.
Let’s look at the «MyGuests» table:
id | firstname | lastname | reg_date | |
---|---|---|---|---|
1 | John | Doe | john@example.com | 2014-10-22 14:26:15 |
2 | Mary | Moe | mary@example.com | 2014-10-23 10:22:30 |
The following examples update the record with in the «MyGuests» table:
Example (MySQLi Object-oriented)
$servername = «localhost»;
$username = «username»;
$password = «password»;
$dbname = «myDB»;
?php
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) die(«Connection failed: » . $conn->connect_error);
>
$sql = «UPDATE MyGuests SET lastname=’Doe’ WHERE ($conn->query($sql) === TRUE) echo «Record updated successfully»;
> else echo «Error updating record: » . $conn->error;
>
Example (MySQLi Procedural)
$servername = «localhost»;
$username = «username»;
$password = «password»;
$dbname = «myDB»;
?php
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) die(«Connection failed: » . mysqli_connect_error());
>
$sql = «UPDATE MyGuests SET lastname=’Doe’ WHERE (mysqli_query($conn, $sql)) echo «Record updated successfully»;
> else echo «Error updating record: » . mysqli_error($conn);
>
Example (PDO)
$servername = «localhost»;
$username = «username»;
$password = «password»;
$dbname = «myDBPDO»;
?php
try $conn = new PDO(«mysql:host=$servername;dbname=$dbname», $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = «UPDATE MyGuests SET lastname=’Doe’ WHERE // Prepare statement
$stmt = $conn->prepare($sql);
// execute the query
$stmt->execute();
// echo a message to say the UPDATE succeeded
echo $stmt->rowCount() . » records UPDATED successfully»;
> catch(PDOException $e) echo $sql . «
» . $e->getMessage();
>
After the record is updated, the table will look like this:
id | firstname | lastname | reg_date | |
---|---|---|---|---|
1 | John | Doe | john@example.com | 2014-10-22 14:26:15 |
2 | Mary | Doe | mary@example.com | 2014-10-23 10:22:30 |
Php update value in table
В MySQL для обновления применяется sql-команда UPDATE :
UPDATE Таблица SET столбец1 = значение1, столбец2 = значение2. WHERE столбец = значение
Для примера возьмем использованную в прошлых темах таблицу Users со следующим определением:
CREATE TABLE Users (id INTEGER AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), age INTEGER)
Объектно-ориентированный стиль
Сначала определим файл index.php , который будет выводить список пользователей с ссылками на их обновление:
Список пользователей
connect_error)< die("Ошибка: " . $conn->connect_error); > $sql = "SELECT * FROM Users"; if($result = $conn->query($sql))< echo "
Имя | Возраст | |
---|---|---|
" . $row["name"] . " | "; echo "" . $row["age"] . " | "; echo "Изменить | "; echo "
Здесь используется команда SELECT, которая получает всех пользователей из таблицы Users. В таблице третий столбец хранит ссылку на скрипт update.php, который мы далее создадим и которому передается параметр id с идентификатором пользователя, которого надо изменить.
Для обновления данных определим скрипт update.php :
connect_error)< die("Ошибка: " . $conn->connect_error); > ?> real_escape_string($_GET["id"]); $sql = "SELECT * FROM Users WHERE "; if($result = $conn->query($sql))< if($result->num_rows > 0) < foreach($result as $row)< $username = $row["name"]; $userage = $row["age"]; >echo "Обновление пользователя
Имя:
Возраст:
"; > else< echo "Пользователь не найден"; > $result->free(); > else< echo "Ошибка: " . $conn->error; > > elseif (isset($_POST["id"]) && isset($_POST["name"]) && isset($_POST["age"])) < $userid = $conn->real_escape_string($_POST["id"]); $username = $conn->real_escape_string($_POST["name"]); $userage = $conn->real_escape_string($_POST["age"]); $sql = "UPDATE Users SET name = '$username', age = '$userage' WHERE "; if($result = $conn->query($sql)) < header("Location: index.php"); >else< echo "Ошибка: " . $conn->error; > > else < echo "Некорректные данные"; >$conn->close(); ?>
Весь код обновления структурно делится на две части. В первой части мы обрабатываем запрос GET. Когда пользователь нажимает на ссылку «Обновить» на странице index.php , то отправляется запрос GET, в котором передается id редактируемого пользователя.
if($_SERVER["REQUEST_METHOD"] === "GET" && isset($_GET["id"]))
И если это запрос GET, то нам надо вывести данные редактируемого пользователя в поля формы. Для этого получаем из базы данных объект по переданному id
$userid = $conn->real_escape_string($_GET["id"]); $sql = "SELECT * FROM Users WHERE "; if($result = $conn->query($sql))Далее получаем полученные данные и, если они имеются, выводим их в поля формы. Таким образом, пользователь увидит на форме данные обновляемого объекта.
Вторая часть скрипта представляет обработку POST-запроса - когда пользователь нажимает на кнопку на форме, то будет отправляться POST-запрос с отправленными данными. Мы получаем эти данные и отправляем базе данных команду UPDATE с этими данными, используя при этом параметризацию запроса:
$userid = $conn->real_escape_string($_POST["id"]); $username = $conn->real_escape_string($_POST["name"]); $userage = $conn->real_escape_string($_POST["age"]); $sql = "UPDATE Users SET name = '$username', age = '$userage' WHERE "; if($result = $conn->query($sql))После выполнения запроса к БД перенаправляем пользователя на скрипт index.php с помощью функции
Таким образом, пользователь обращается к скрипту index.php , видит таблицу с данными и нажимает на ссылку "Обновить" в одной из строк.
После нажатия его перебрасывает на скрипт update.php , который выводит данные редактируемого объекта. Пользователь изменяет данные и нажимает на кнопку.
Данные в запросе POST отправляются этому же скрипту update.php , который сохраняет данные и перенаправляет пользователя обратно на index.php .
Процедурный стиль
Список пользователей
$sql = "SELECT * FROM Users"; if($result = mysqli_query($conn, $sql))< echo "
Имя | Возраст | |
---|---|---|
" . $row["name"] . " | "; echo "" . $row["age"] . " | "; echo "Изменить | "; echo "
?> 0) < foreach($result as $row)< $username = $row["name"]; $userage = $row["age"]; >echo "Обновление пользователя
Имя:
Возраст:
"; > else< echo "Пользователь не найден"; > mysqli_free_result($result); > else < echo "Ошибка: " . mysqli_error($conn); >> elseif (isset($_POST["id"]) && isset($_POST["name"]) && isset($_POST["age"])) < $userid = mysqli_real_escape_string($conn, $_POST["id"]); $username = mysqli_real_escape_string($conn, $_POST["name"]); $userage = mysqli_real_escape_string($conn, $_POST["age"]); $sql = "UPDATE Users SET name = '$username', age = '$userage' WHERE "; if($result = mysqli_query($conn, $sql))< header("Location: index.php"); >else < echo "Ошибка: " . mysqli_error($conn); >> else < echo "Некорректные данные"; >mysqli_close($conn); ?>
Обновление данных в базе данных MySQL
В этом уроке вы узнаете, как обновлять записи в таблице базы данных MySQL с помощью запросов SQL.
Обновление данных БД
При обновлении данных в таблице можно либо обновить определенные строки, либо обновить все строки в таблице. Эти задачи решаются с помощью оператора SQL UPDATE в сочетании с ключевыми словами SET и WHERE .
Базовый синтаксис оператора UPDATE может быть задан следующим образом:
Давайте создадим SQL-запрос, используя оператор UPDATE и условие WHERE , передав его функции PHP mysqli_query() для обновления записей таблиц. Рассмотрим следующую таблицу persons в базе данных demo:
Код PHP в следующем примере обновит адрес электронной почты человека в таблице persons, идентификатор которого равен 1:
Пример
$sql = "UPDATE persons SET email='peterparker_new@mail.com' WHERE (mysqli_query($conn, $sql)) < echo "Запись успешно обновлена"; >else < echo "Ошибка обновления записи: " . mysqli_error($conn); >mysqli_close($conn); ?>
$sql = "UPDATE persons SET email='peterparker_new@mail.com' WHERE ($conn->query($sql) === TRUE) < echo "Запись успешно обновлена"; >else < echo "Ошибка обновления записи: " . $conn->error; > $conn->close(); ?>
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "UPDATE persons SET email='peterparker_new@mail.com' WHERE // Подготовить заявление $stmt = $conn->prepare($sql); // выполнить запрос $stmt->execute(); // echo-сообщение, чтобы сказать, что ОБНОВЛЕНИЕ выполнено успешно echo $stmt->rowCount() . " записи ОБНОВЛЕНЫ успешно"; > catch(PDOException $e) < echo $sql . "
" . $e->getMessage(); > $conn = null; ?>
После обновления таблица лиц будет выглядеть так:
Примечание: Обратите внимание на условие WHERE в синтаксисе UPDATE: условие WHERE указывает, какую запись или записи следует обновить. Если вы опустите условие WHERE, все записи будут обновлены!