具有未知数量参数的PDO bindParam

时间:2015-05-06 13:53:21

标签: pdo bindparam

我想为具有特定ID的每一行运行更新查询:

e.g。

$ids = array(111, 112, 113);
$query = "UPDATE mytable SET columnName = 'Y' WHERE id = :id1 or id = :id2 or id = :id3";
$stmt->bindParam(':id1', $ids[0], PDO::PARAM_INT);
$stmt->bindParam(':id2', $ids[1], PDO::PARAM_INT);
$stmt->bindParam(':id3', $ids[2], PDO::PARAM_INT);

如果我知道有3个要更新的ID,这可以正常工作,但如果id字段的数量是可变的,我该怎么办?

1 个答案:

答案 0 :(得分:0)

这样的事情可以解决问题。

$ids = array(111, 112, 113);
$valueString = "";

foreach($ids as $key => $val) {
    $valueString .= ":id" . $key . " = " . $val;

    if (end($ids) != $val) {
        $valueString .= ", ";
    }
}

$query = "UPDATE mytable SET columnName = 'Y' WHERE ". $valueString;

foreach($ids as $key => $val) {
    $stmt->bindParam(':id' . $key, $val, PDO::PARAM_INT);
}