gpt4 book ai didi

php - 为什么这个 PDOStatement 不能正确执行?

转载 作者:搜寻专家 更新时间:2023-10-31 21:14:17 26 4
gpt4 key购买 nike

我还有其他执行良好的 PDO 语句,但这个被搞砸了。

$sth = $dbh->prepare( 'SELECT * FROM `post` LIMIT ?,?' );
$sth->execute( array( 0, 10 ) );

上面的不工作,但下面的工作:

$sth = $dbh->prepare( 'SELECT * FROM `post` LIMIT 0,10' );
$sth->execute( array( 0, 10 ) );

那么,为什么第一种方式在应该给出相同响应时却不显示我的任何结果?


所以这就是我现在拥有的

$start = 0;
$perpage = 10;

$sth = $dbh->prepare( 'SELECT * FROM `post` LIMIT ?,?' );
$sth->bindValue(1, $start, PDO::PARAM_INT);
$sth->bindValue(2, $perpage, PDO::PARAM_INT);
$sth->execute();

这也行不通

$sth = $dbh->prepare( 'SELECT * FROM `post` LIMIT ?,?' );
$sth->bindParam(1, 0, PDO::PARAM_INT);
$sth->bindParam(2, 10, PDO::PARAM_INT);
$sth->execute();

最佳答案

问题很可能是 PDO 会将任何输入解释为字符串。你可以试试

$sth = $dbh->prepare( 'SELECT * FROM `post` LIMIT :low,:high' );
$sth->bindValue(':low', 0, PDO::PARAM_INT);
$sth->bindValue(':high', 10, PDO::PARAM_INT);
$sth->execute();

或者

$low = 0;
$high = 10;
$sth = $dbh->prepare( 'SELECT * FROM `post` LIMIT :low,:high' );
$sth->bindParam(':low', $low, PDO::PARAM_INT);
$sth->bindParam(':high', $high, PDO::PARAM_INT);
$sth->execute();

来源:How to apply bindValue method in LIMIT clause?

关于php - 为什么这个 PDOStatement 不能正确执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12516578/

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