1
私はデータベースの2列を更新するphp関数を持っています。しかし、私はそれは両方の姓と名の更新する代わりに、ジョーと知らんの知らないのが好きないくつかの理由でステートメントを実行するときPHP PDO foreachの問題
$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);
:それはこのようになります。
私は$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、 $ fields [$ key]); ' – v010dya