PHP PDO bindParam陷入了困境
我有一个这样的循环:PHP PDO bindParam陷入了困境,php,pdo,Php,Pdo,我有一个这样的循环: foreach($Fields as $Name => $Value){ $Query->bindParam(':'.$Name, $Value, PDO::PARAM_STR); } foreach($Fields as $Name => &$Value){ $Query->bindParam(':'.$Name, $Value, PDO::PARAM_STR); } 没什么复杂的。但是,每个值都设置为数组中的最后一个值
foreach($Fields as $Name => $Value){
$Query->bindParam(':'.$Name, $Value, PDO::PARAM_STR);
}
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);
}
foreach($Fields as $Name => &$Value){
$Query->bindParam(':'.$Name, $Value, PDO::PARAM_STR);
}
这让我快发疯了
实际报价来自:
维利2010年5月28日12:01
本工程(参考价值):
这将失败($val by value,因为bindParam需要&$variable):
如果您不需要在执行查询之前将变量与绑定参数保持同步(根据我的经验,99.9%的情况下都是这样),那么最好简单地使用,而不是:
还有一个更糟糕的选择来解决这个问题 您可以简单地遍历数组键,并使用这些键获取每个值作为参数:
foreach(array_keys($params) as $key) {
$sth->bindParam($key, $params[$key]);
}
谢谢你的信息,但我知道这件事。这就是我使用bindParam的原因,脚本后面会有一些变化。我使用bindValue的次数太多,以至于我不知道bindParam需要一个&.正确的答案,但不幸的是,如果您也需要绑定键值,那么它就不起作用了。在这种情况下,您将需要使用该键创建一个数组。使用数组_键
foreach(array_keys($params) as $key) {
$sth->bindParam($key, $params[$key]);
}