EN
PHP - how to make MySQL update query with PDO?
4 points
In PHP it is possible to make SQL UPDATE
query with PDO in following way.
xxxxxxxxxx
1
2
3
if(isset($_GET['currentId'])
4
&& isset($_GET['newName']) && isset($_GET['newRole']))
5
{
6
$current_id = $_GET['currentId'];
7
8
$new_name = $_GET['newName'];
9
$new_role = $_GET['newRole'];
10
11
$db_name = 'test';
12
$db_host = '127.0.0.1'; // 'localhost'
13
$db_username = 'root';
14
$db_password = 'root';
15
16
$dsn = 'mysql:dbname=' . $db_name . ';host=' . $db_host . ';charset=utf8';
17
$pdo = new PDO($dsn, $db_username, $db_password);
18
19
$query = 'UPDATE `users` '
20
. 'SET `name` = :new_name, `role` = :new_role '
21
. 'WHERE `id` = :current_id';
22
23
$statement = $pdo->prepare($query);
24
25
if($statement === FALSE)
26
die('Query preparation error!');
27
28
$parameters = array(
29
'current_id' => $current_id,
30
'new_name' => $new_name,
31
'new_role' => $new_role
32
);
33
34
if($statement->execute($parameters))
35
{
36
$count = $statement->rowCount();
37
38
echo 'Number of updated rows is ' . $count . '.';
39
}
40
else
41
echo 'Query execution error!';
42
}
43
44
Running:
xxxxxxxxxx
1
http://localhost/update-user.php?currentId=3&newName=Matt&newRole=admin
Result:

Database:

create_tables.sql
file:
xxxxxxxxxx
1
CREATE TABLE `users` (
2
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
3
`name` VARCHAR(100) NOT NULL,
4
`role` VARCHAR(15) NOT NULL,
5
PRIMARY KEY (`id`)
6
)
7
ENGINE=InnoDB;
insert_data.sql
file:
xxxxxxxxxx
1
INSERT INTO `users`
2
(`name`, `role`)
3
VALUES
4
('John', 'admin'),
5
('Chris', 'moderator'),
6
('Kate', 'user'),
7
('Denis', 'moderator');