我对mysql_query有疑问。我想从id数组列表及其值更新特定id的特定值(id' s值)。
这是正常查询
update table_name set name='sham', age='18' where id=1
Update table_name set name='ram', age='19' where id=2
Update table_name set name='rani', age='29' where id=3
而不是上面的查询,我想通过将这些值传递给数组
来更新1个查询中的这些字段like update set name=?, age=? where id=?
我们能做到吗?
应编写哪些查询以及如何传入数组以更新查询
答案 0 :(得分:0)
我们能做到吗?
是的,可以做到。
你应该这样做吗?
没有。这是个坏主意。这将是缓慢而低效的。
如果要使用值数组来使用不同的值多次执行查询,可以使用PDO和使用命名占位符的预处理语句执行此操作的一种方法:
(我们假设您的脚本中已经有一个可用的PDO连接:$dbh
)
$values = [
[
':name' => 'sham',
':age' => '18',
':id' => 1
],
[
':name' => 'ram',
':age' => '19',
':id' => 2
],
[
':name' => 'rani',
':age' => '29',
':id' => 3
]
];
$query = "UPDATE some_table SET name = :name, age = :age where id = :id";
$sth = $dbh->prepare($query);
foreach ($values as $set) {
$sth->execute($set);
}
此代码将准备一次查询,并为$values
中的每组值执行。
以下是带有未命名占位符(问号)的相同代码:
$values = [
[
'sham',
'18',
1
],
[
'ram',
'19',
2
],
[
'rani',
'29',
3
]
];
$query = "UPDATE some_table SET name = ?, age = ? where id = ?";
$sth = $dbh->prepare($query);
foreach ($values as $set) {
$sth->execute($set);
}