从给定的id数组列表及其值更新特定id的特定值

时间:2016-07-30 08:37:45

标签: php mysql

我对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=?

我们能做到吗?

应编写哪些查询以及如何传入数组以更新查询

1 个答案:

答案 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);
}