在WHERE IN中使用位置占位符仅返回一个结果

1adog1

我正在尝试使用PDO将WHERE IN语句合并到一个已经正常工作的查询中。我遍历并使用索引数组的计数动态创建了位置占位符,并遍历了所述数组以绑定每个值。但是,当所有这些都说完之后,我只会得到一个结果,特别是与我动态绑定的最后一个值匹配的结果。

除此之外,如果我只是$arrayToCheck使用逗号代替来作为定界符,则会$placeholderSpots得到我期望的全部24个结果。

$arrayToCheck = json_decode($listFromDatabase); //This is a Python List converted to a string using Python's json.dumps, which was then passed into a database table.
$timePeriod = 0;
$rowLimit = 2500;

$placeholderSpots = implode(", ", array_fill(0, count($arrayToCheck), "?"));

$toPull = $GLOBALS['MainDatabase']->prepare("SELECT * FROM datatable WHERE timecolumn >= ? AND idcolumn IN ($placeholderSpots) ORDER BY timecolumn DESC LIMIT ?");
$toPull->bindParam(1, $timePeriod, PDO::PARAM_INT);

$tempCounter = 2;
foreach ($arrayToCheck as $eachID) {
    
    $toPull->bindParam($tempCounter, $eachID, PDO::PARAM_INT);
    $tempCounter++;
    
}

$toPull->bindParam($tempCounter, $rowLimit, PDO::PARAM_INT);

if ($toPull->execute()) {
    
    while ($pulledData = $toPull->fetch(PDO::FETCH_ASSOC)) {
        //Data Is Processed Here
    }
}
达曼

您需要替换bindParam()bindValue()

foreach ($arrayToCheck as $eachID) {
    $toPull->bindValue($tempCounter++, $eachID, PDO::PARAM_INT);
}

bindParam()方法通过引用绑定到变量。遍历数组时,您每次都会为同一个变量分配一个新值,因此变量不会更改,只有值会更改。最终结果是,您绑定了相同的变量多次,该变量保存了数组中的最后一个值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

原则仅返回一个可能违反where语句的结果

如何对列表中的每个项目执行 linq 查询,在 where 子句中使用它并从每个查询的结果中返回一个集合?

使用WHERE子句仅在数组字段内部仅包含一个元素的情况下检索结果

如何在MySQL中返回结果列表,而WHERE只返回一个

在X,X,X中选择WHERE ID仅一个结果

包含union的where子句仅返回第一个查询

子查询结果上的WHERE子句始终返回一个空集

WHERE NOT IN返回一个空集,而不应该返回

IN语句与数组之后在WHERE语句中使用更多占位符

JDBC如何在带where子句的预准备语句中使用占位符?

从上一个WHERE条件获取结果

SQL仅使用where子句删除一个字段

是否有一个带有多个where子句的select查询在一个结果表中返回多个结果行?

使用 MySQL 查询的结果作为下一个的 WHERE 子句

在where()函数中或多或少返回一个对象

使用 WHERE 子句中的占位符查询记录是否存在

在另一个函数中使用std :: bind返回对象和占位符作为参数

Mysql左联接仅在一个表中使用where子句检查记录

如何在同一个查询中使用 JOIN、WHERE 和 GROUP BY

如何使用一个WHERE语句返回两个数组

在WHERE中使用NULL

在 mongodb 中使用 where

在WHERE中使用MIN

在WHERE中使用CASE

在 WHERE 中使用 GREATEST

LINQ:一个“ where”子句与多个链接的“ where子句”

SQL WHERE子句仅在有2个预期结果时返回结果之一

在Laravel中使用WHERE返回空数组

WHERE 子句不返回结果