gpt4 book ai didi

php - PDO 限制查询在执行中使用绑定(bind)不起作用

转载 作者:行者123 更新时间:2023-11-29 17:30:37 25 4
gpt4 key购买 nike

我正在尝试让限制查询正常工作。到目前为止,我已经验证了以下内容:

所有输入均有效且正确。当针对 MySQL 手动运行时,查询有效值被转换为 INT。我什至用 int 值替换了变量。

       try {
$sql = "SELECT * FROM sensor_data WHERE sid=:sid ORDER BY id DESC LIMIT :starting_limit, :recordlimit";
$core = CoreDB::getInstance();
$sth = $core->dbh->prepare($sql);
$sth->execute(array(':sid' => $sensor->getID(), ':starting_limit' => (int)0, ':recordlimit' => (int)10));
// $sth->execute(array(':sid' => $sensor->getID()));
$results = $sth->fetchAll();
var_dump($sth->rowCount());
if ($sth->rowCount() > 0) {
foreach($results as $row){
$id = $row['id'];
var_dump($id);
}
}
}
catch(Exception $e){
}

如有任何建议,我们将不胜感激

最佳答案

我发现的唯一解决方案是手动绑定(bind)参数,而不是将它们放入执行方法中的数组中。

         try {
$sql = "SELECT * FROM sensor_data WHERE sid=:sid ORDER BY id DESC LIMIT :starting_limit, :recordlimit";
$core = CoreDB::getInstance();
$sth = $core->dbh->prepare($sql);
$sth->bindValue(':sid', $sensor->getID(), PDO::PARAM_INT);
$sth->bindValue(':starting_limit', 0, PDO::PARAM_INT);
$sth->bindValue(':recordlimit', 10, PDO::PARAM_INT);
$sth->execute();
$results = $sth->fetchAll();
var_dump($sth->rowCount());
if ($sth->rowCount() > 0) {
foreach($results as $row){
$id = $row['id'];
var_dump($id);
}
}
}
catch(Exception $e){
}

如果有人知道如何让它在执行方法中工作,请告诉我,我将更新答案。

关于php - PDO 限制查询在执行中使用绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50690206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com