Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP PDO bindParam陷入了困境_Php_Pdo - Fatal编程技术网

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]);
}