Итак, у меня есть функция php, которая обновляет 2 столбца в базе данных. Это выглядит следующим образом:PHP PDO foreach issue
$fields = array("firstname" => "Joe", "lastname" = "Dunno");
$stmt = $connection->prepare("UPDATE users SET firstname = :firstname, lastname = :lastname WHERE user_id = :user_id");
foreach ($fields as $key => $value)
{
$stmt->bindParam(":" . $key, $value);
}
$stmt->bindParam(":user_id", $user_id);
Однако, когда я исполняю заявление по какой-то причине он любит обновлять Firstname и фамилия как в Dunno вместо Джо и Незнайка.
Я попробовал echo'ing $key
и $value
, и он распечатывается правильно.
По какой-то странной причине, если я использую этот цикл, он работает правильно.
for ($fieldsKeys = array_keys($fields), $x = 0; $x < count($fields); $x++)
{
$stmt->bindParam(":" . $fieldsKeys[$x], $fields[$fieldsKeys[$x]]);
}
спасибо. Я приму свой ответ, как только это позволит. – Resantic
В случае, если кто-то найдет его и на самом деле понадобится 'bindParam' (например, если значения в массиве могут измениться до выполнения оператора), вы можете сделать' $ stmp-> bindParam (':'. $ Key, $ поля [$ ключ]); ' – v010dya