0
當重複如果我運行下面的代碼:PDO綁定PARAMS循環
$query = "select * from city where region = :region and country = :country";
$stmt = db->prepare($query);
$region = '06';
$country = 'ad';
$params = array(":region" => $region, ":country" => $country);
foreach ($params as $key => $value) {
$stmt->bindParam($key, $value, PDO::PARAM_STR);
}
$stmt->execute();
return $stmt->fetchAll();
我在查詢日誌中看到的是:
select * from city where region = 'ad' and country = 'ad'
這是爲什麼? 需要注意的是,如果我只是參數綁定了一個又一個喜歡在這裏不會發生:
$stmt->bindParam(':region', $region, PDO::PARAM_STR);
$stmt->bindParam(':country', $country, PDO::PARAM_STR);
因爲你覆蓋了語句,而不是添加到它。你可以'執行($ params)' –
@JayBlanchard,它爲我工作,謝謝! – user2703790
IIRC bindParam通過引用綁定,而不是通過值綁定,因此如果稍後更改變量值,則會自動執行查詢。 – Maerlyn