hmarketing.ru

Обновление данных PDO

В библиотеке pdo для обновления данных может применяться тот же метод exec() объекта PDO, который применяется при добавлении. Например, возьмем использованную в прошлых темах таблицу Users со следующим определением:

CREATE TABLE Users (id INTEGER AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), age INTEGER)

Изменим в этой таблице поле age для строки, которая имеет id = 1 :

exec($sql); echo "Обновлено строк: $affectedRowsNumber"; > catch (PDOException $e) < echo "Database error: " . $e->getMessage(); > ?>

Результат метода $conn->exec() в данном случае количество обновленных строк.

Однако если данные на обновление приходят извне, то мы опять как и при добавлении сталкиваемся с потенциальной уязвимостью подобного подхода. Поэтому в этом случаае опять же лучше использовать параметризацию и prepared statements .

Отправка данных из формы и обновление

Сначала определим файл index.php , который будет выводить список пользователей:

     

Список пользователей

query($sql); echo ""; foreach($result as $row)< echo ""; echo ""; echo ""; echo ""; echo ""; > echo "
ИмяВозраст
" . $row["name"] . "" . $row["age"] . "Обновить
"; > catch (PDOException $e) < echo "Database error: " . $e->getMessage(); > ?>

Здесь используется команда SELECT , которая получает всех пользователей из таблицы Users. В таблице третий столбец хранит ссылку на скрипт update.php , который мы далее создадим и которому передается параметр id с идентификатором пользователя, которого надо изменить.

Теперь определим файл update.php для редактирования пользователей:

 catch (PDOException $e) < die("Database error: " . $e->getMessage()); > ?>     prepare($sql); $stmt->bindValue(":userid", $userid); // выполняем выражение и получаем пользователя по id $stmt->execute(); if($stmt->rowCount() > 0) < foreach ($stmt as $row) < $username = $row["name"]; $userage = $row["age"]; >echo "

Обновление пользователя

Имя:

Возраст:

"; > else < echo "Пользователь не найден"; >> elseif (isset($_POST["id"]) && isset($_POST["name"]) && isset($_POST["age"])) < $sql = "UPDATE Users SET name = :username, age = :userage WHERE = $conn->prepare($sql); $stmt->bindValue(":userid", $_POST["id"]); $stmt->bindValue(":username", $_POST["name"]); $stmt->bindValue(":userage", $_POST["age"]); $stmt->execute(); header("Location: index.php"); > else < echo "Некорректные данные"; >?>

Весь код обновления структурно делится на две части. В первой части мы обрабатываем запрос Get. Когда пользователь нажимает на ссылку «Обновить» на странице index.php , то отправляется запрос GET, в котором передается id редактируемого пользователя. Поэтому мы сначала смотрим, представляет ли запрос GET-запрос и имеет ли он параметр id .

if($_SERVER["REQUEST_METHOD"] === "GET" && isset($_GET["id"]))

И если это запрос GET, то нам надо вывести данные редактируемого пользователя в поля формы. Для этого отправляем базе данных запрос:

$sql = "SELECT * FROM Users WHERE = $conn->prepare($sql); $stmt->bindValue(":userid", $userid); $stmt->execute();

Далее получаем полученные данные и, если они имеются, выводим их в поля формы. Таким образом, пользователь увидит на форме данные редактируемого объекта.

Вторая часть скрипта представляет обработку POST-запроса — когда пользователь нажимает на кнопку на форме, то будет отправляться POST-запрос с отправленными данными. Мы получаем эти данные и отправляем базе данных команду UPDATE с этими данными, используя при этом параметризацию запроса:

$sql = "UPDATE Users SET name = :username, age = :userage WHERE = $conn->prepare($sql); $stmt->bindValue(":userid", $_POST["id"]); $stmt->bindValue(":username", $_POST["name"]); $stmt->bindValue(":userage", $_POST["age"]); $stmt->execute();

После выполнения запроса к БД перенаправляем пользователя на скрипт index.php с помощью функции:

Таким образом, пользователь обращается к скрипту index.php , видит таблицу с данными и нажимает на ссылку «Обновить» в одной из строк:

Обновление данных PDO 1

После нажатия его перебрасывает на скрипт update.php , который выводит данные редактируемого объекта. Пользователь изменяет данные и нажимает на кнопку:

Обновление данных PDO 2

Обновление данных PDO 3

Данные в запросе POST отправляются этому же скрипту update.php , который сохраняет данные и перенаправляет пользователя обратно на index.php .

Источник

Sql update php pdo

Для обновления применяется sql-команда UPDATE :

UPDATE Таблица SET столбец1 = значение1, столбец2 = значение2. WHERE столбец = значение

В библиотеке pdo для обновления данных может применяться тот же метод exec() объекта PDO, который применяется при добавлении. Например, возьмем использованную в прошлых темах таблицу Users со следующим определением:

CREATE TABLE Users (id INTEGER AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), age INTEGER)

Изменим в этой таблице поле age для строки, которая имеет id = 1 :

exec($sql); echo "Обновлено строк: $affectedRowsNumber"; > catch (PDOException $e) < echo "Database error: " . $e->getMessage(); > ?>

Результат метода $conn->exec() в данном случае количество обновленных строк.

Однако если данные на обновление приходят извне, то мы опять как и при добавлении сталкиваемся с потенциальной уязвимостью подобного подхода. Поэтому в этом случаае опять же лучше использовать параметризацию и prepared statements .

Отправка данных из формы и обновление

Сначала определим файл index.php , который будет выводить список пользователей:

     

Список пользователей

query($sql); echo ""; foreach($result as $row)< echo ""; echo ""; echo ""; echo ""; echo ""; > echo "
ИмяВозраст
" . $row["name"] . "" . $row["age"] . "Обновить
"; > catch (PDOException $e) < echo "Database error: " . $e->getMessage(); > ?>

Здесь используется команда SELECT, которая получает всех пользователей из таблицы Users. В таблице третий столбец хранит ссылку на скрипт update.php , который мы далее создадим и которому передается параметр id с идентификатором пользователя, которого надо изменить.

Теперь определим файл update.php для редактирования пользователей:

 catch (PDOException $e) < die("Database error: " . $e->getMessage()); > ?>     prepare($sql); $stmt->bindValue(":userid", $userid); // выполняем выражение и получаем пользователя по id $stmt->execute(); if($stmt->rowCount() > 0) < foreach ($stmt as $row) < $username = $row["name"]; $userage = $row["age"]; >echo "

Обновление пользователя

Имя:

Возраст:

"; > else < echo "Пользователь не найден"; >> elseif (isset($_POST["id"]) && isset($_POST["name"]) && isset($_POST["age"])) < $sql = "UPDATE Users SET name = :username, age = :userage WHERE = $conn->prepare($sql); $stmt->bindValue(":userid", $_POST["id"]); $stmt->bindValue(":username", $_POST["name"]); $stmt->bindValue(":userage", $_POST["age"]); $stmt->execute(); header("Location: index.php"); > else < echo "Некорректные данные"; >?>

Весь код обновления структурно делится на две части. В первой части мы обрабатываем запрос Get. Когда пользователь нажимает на ссылку «Обновить» на странице index.php , то отправляется запрос GET, в котором передается id редактируемого пользователя. Поэтому мы сначала смотрим, представляет ли запрос GET-запрос и имеет ли он параметр id .

if($_SERVER["REQUEST_METHOD"] === "GET" && isset($_GET["id"]))

И если это запрос GET, то нам надо вывести данные редактируемого пользователя в поля формы. Для этого отправляем базе данных запрос

$sql = "SELECT * FROM Users WHERE = $conn->prepare($sql); $stmt->bindValue(":userid", $userid); $stmt->execute();

Далее получаем полученные данные и, если они имеются, выводим их в поля формы. Таким образом, пользователь увидит на форме данные редактируемого объекта.

Вторая часть скрипта представляет обработку POST-запроса — когда пользователь нажимает на кнопку на форме, то будет отправляться POST-запрос с отправленными данными. Мы получаем эти данные и отправляем базе данных команду UPDATE с этими данными, используя при этом параметризацию запроса:

$sql = "UPDATE Users SET name = :username, age = :userage WHERE = $conn->prepare($sql); $stmt->bindValue(":userid", $_POST["id"]); $stmt->bindValue(":username", $_POST["name"]); $stmt->bindValue(":userage", $_POST["age"]); $stmt->execute();

После выполнения запроса к БД перенаправляем пользователя на скрипт index.php с помощью функции

Таким образом, пользователь обращается к скрипту index.php , видит таблицу с данными и нажимает на ссылку «Обновить» в одной из строк.

Вывод данных из MySQL в PHP и pdo

После нажатия его перебрасывает на скрипт update.php , который выводит данные редактируемого объекта. Пользователь изменяет данные и нажимает на кнопку.

Редактирование данных из MySQL в PHP и pdo

Данные в запросе POST отправляются этому же скрипту update.php , который сохраняет данные и перенаправляет пользователя обратно на index.php .

Источник

PHP PDO Update

Summary: in this tutorial, you will learn how to update data in a table using PHP PDO.

Updating data from PHP using PDO

To update data in a table from PHP using PDO, you follow these steps:

  • First, connect to the database by creating a new instance of the PDO class.
  • Next, construct an SQL UPDATE statement to update data in a table.
  • Then, call the prepare() method of the PDO object. The prepare() method returns a new instance of the PDOStatement class.
  • After that, bind the values to the UPDATE statement by calling the bindParam() method of the PDOStatement object.
  • Finally, execute the statement by calling the execute() method of the PDOStatement .

PHP PDO update example

The following example shows how to update the publisher with id 1 in the publishers table:

 // connect to the bookdb database $pdo = require_once 'connect.php'; $publisher = [ 'publisher_id' => 1, 'name' => 'McGraw-Hill Education' ]; $sql = 'UPDATE publishers SET name = :name WHERE publisher_id = :publisher_id'; // prepare statement $statement = $pdo->prepare($sql); // bind params $statement->bindParam(':publisher_id', $publisher['publisher_id'], PDO::PARAM_INT); $statement->bindParam(':name', $publisher['name']); // execute the UPDATE statment if ($statement->execute()) < echo 'The publisher has been updated successfully!'; > Code language: HTML, XML (xml)

First, connect to the bookdb database and get an instance of the PDO object. Check the connect.php script for the detail.

$pdo = require_once 'connect.php';Code language: PHP (php)

Second, define data for updating and construct an UPDATE statement:

$publisher = [ 'publisher_id' => 1, 'name' => 'McGraw-Hill Education' ]; $sql = 'UPDATE publishers SET name = :name WHERE publisher_id = :publisher_id';Code language: PHP (php)

The UPDATE statement uses the named placeholders :publisher_id .

Third, prepare the UPDATE statement for execution by calling the prepare() method:

$statement = $pdo->prepare($sql);Code language: PHP (php)

Fourth, bind the values to the UPDATE statement:

// bind values $statement->bindParam(':publisher_id', $publisher['publisher_id'], PDO::PARAM_INT); $statement->bindParam(':name', $publisher['name']);Code language: PHP (php)

Finally, execute the UPDATE statement by calling the execute() method of the PDOStatement object:

if ($statement->execute()) < echo 'The publisher has been updated successfully!'; >Code language: PHP (php)

To get the number of updated rows, you call the rowCount() method of the PDOStatement object.

Summary

Источник

Update query with PDO and MySQL

@SWL Thanks. The formatting is done manually in this case, although some IDEs allow you to set formatting rules and perform the auto-formatting for you.

can i use this UPDATE `access_users` SET `contact_first_name` = :firstname, `contact_surname` = :surname, `contact_email` = :email, `telephone` = :telephone WHERE `user_name` = :user_name user name is in session

This has nothing to do with using PDO, it’s just that you are confusing INSERT and UPDATE.

  • INSERT creates a new row. I’m guessing that you really want to create a new row.
  • UPDATE changes the values in an existing row, but if this is what you’re doing you probably should use a WHERE clause to restrict the change to a specific row, because the default is that it applies to every row.

So this will probably do what you want:

$sql = "INSERT INTO `access_users` (`contact_first_name`,`contact_surname`,`contact_email`,`telephone`) VALUES (:firstname, :surname, :email, :telephone); "; 

Note that I’ve also changed the order of columns; the order of your columns must match the order of values in your VALUES clause.

MySQL also supports an alternative syntax for INSERT:

$sql = "INSERT INTO `access_users` SET `contact_first_name` = :firstname, `contact_surname` = :surname, `contact_email` = :email, `telephone` = :telephone "; 

This alternative syntax looks a bit more like an UPDATE statement, but it creates a new row like INSERT. The advantage is that it’s easier to match up the columns to the correct parameters.

Источник

Читайте также:  Python lxml etree fromstring
Оцените статью