PHP PDO bindParam 正在陷入困境
我有一个这样的循环:
foreach($Fields as $Name => $Value){
$Query->bindParam(':'.$Name, $Value, PDO::PARAM_STR);
}
没什么复杂的。但是,每个值都设置为数组 () 中的最后一个值。$Fields
我该如何解决这个问题?
我有一个这样的循环:
foreach($Fields as $Name => $Value){
$Query->bindParam(':'.$Name, $Value, PDO::PARAM_STR);
}
没什么复杂的。但是,每个值都设置为数组 () 中的最后一个值。$Fields
我该如何解决这个问题?
但是,多亏了这些家伙。我发现你需要通过引用传递值,就像这样:&
foreach($Fields as $Name => &$Value){
$Query->bindParam(':'.$Name, $Value, PDO::PARAM_STR);
}
这让我发疯。
PHP.net 的实际报价:
Vili 2010年5月28日 12:01
这有效(通过引用$val):
<?php
foreach ($params as $key => &$val){
$sth->bindParam($key, $val);
}
?>
这将失败(按值$val,因为 bindParam 需要 &$variable):
<?php
foreach ($params as $key => $val) {
$sth->bindParam($key, $val);
}
?>
如果你不需要在执行查询之前使变量与绑定参数保持同步的能力(根据我的经验,这种情况在99.9%的情况下都是如此),那么最好只使用PDOStatement::bindValue()
而不是PDOStatement::bindParam()
:
foreach ($Fields as $Name => $Value) {
$Query->bindValue(':' . $Name, $Value, PDO::PARAM_STR);
}