这是我的代码

$PageNumber = $_GET["p"];
if (!isset($PageNumber) || $PageNumber < 1 || !is_int($PageNumber))
    $PageNumber = 1;
$PageSize = 3;
$strSQL = $dbCon->prepare("SELECT * FROM News WHERE isActive = 1 ORDER BY NewsID DESC LIMIT (:PageNumber - 1)*:PageSize, :PageSize;");
$strSQL->bindParam(":PageNumber", $PageNumber, PDO::PARAM_INT);
$strSQL->bindParam(":PageSize", $PageSize, PDO::PARAM_INT);
$strSQL->execute();
$Result = $strSQL->fetchAll();
if (count($Result) != 0) {
    print_r($Result);
} else {
    echo "no record";
}


我确定行存在,但输出为no record,当我用默认值(如LIMIT 0,3)替换参数时,效果很好。

最佳答案

由于您没有捕获异常,但是我想您在做什么错。在PDO中,您的bindValue或bindParam变量应等于查询中使用的变量。我的意思是

$strSQL = $dbCon->prepare("SELECT * FROM News WHERE isActive = 1 ORDER BY NewsID DESC LIMIT :Start, :PageSize;");
$strSQL->bindParam(":Start",($PageNumber - 1)*$PageSize, PDO::PARAM_INT);
$strSQL->bindParam(":PageSize", $PageSize, PDO::PARAM_INT);

关于php - PHP PDO fetchAll()返回空数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11360451/

10-10 06:38