2015-05-06 3 views
0

Я хотел бы запустить запрос обновления для каждой строки с определенным ID:PDO bindParam с неизвестным количеством параметров

например.

$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 Идентификаторы для обновления, но как бы я это сделать, если количество полей идентификатора переменной?

ответ

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