Php PDO发出带有限制的语法错误

Php PDO发出带有限制的语法错误,php,mysql,pdo,Php,Mysql,Pdo,我的PDO有一个sintax错误 当我尝试使用以下限制进行准备好的查询时: 限制:myLimit'); 我在mysql中有一个错误:'( 这是怎么回事 当我把数字放进去时,它是可以的,就像这样:限制2 <?php try{ $repFooterNews = $bdd->prepare('SELECT * FROM newss ORDER BY id DESC LIMIT :myLimit'); $myLimit = 2; $repFooterNews-&g

我的PDO有一个sintax错误

当我尝试使用以下限制进行准备好的查询时:

限制:myLimit'); 我在mysql中有一个错误:'(

这是怎么回事

当我把数字放进去时,它是可以的,就像这样:限制2

<?php 
try{
    $repFooterNews = $bdd->prepare('SELECT * FROM newss ORDER BY id DESC LIMIT :myLimit'); 
    $myLimit = 2;
    $repFooterNews->execute(array('myLimit'=>$myLimit));
    $repFooterNews->setFetchMode(PDO::FETCH_OBJ);
        while ($newBas = $repFooterNews->fetch() ){
            echo "<div class=\"newsfoot\">";
            echo "<h2> $newBas->title</h2>";
            echo "<p>$newBas->short</p>";
            echo "</div>";
            }
    }catch (PDOException $e){
    echo "Error !: " . $e->getMessage() . "<br/>"; 

    }
?>

来自:

包含与正在执行的SQL语句中的绑定参数数量相同的元素的值数组。所有值都被视为PDO::PARAM_STR

尝试像这样绑定limit参数,而不是在execute函数中:

$repFooterNews->bindParam(':myLimit', $myLimit, PDO::PARAM_INT);
$repFooterNews->execute();

我认为问题是因为您没有在
execute()
中正确指定占位符,请尝试此操作

$repFooterNews->execute(array(':myLimit'=>$myLimit));

看起来可能是这样的,请尝试将
$myLimit
强制转换为整数。在您将其硬编码为2以测试它之前,它是否来自用户输入?您好,没有用户输入,请尝试理解PDO不起作用,错误!:SQLSTATE[HY093]:无效参数编号:未定义参数:'(Ty它起作用,但假设我有另一个值(字符串等,我可以放入数组$repFooterNews->execute(数组());值?bind仅用于限制或数字?每当PDO要求您的参数不是字符串时,您必须单独绑定它。TY为了您的努力,请帮助我了解this@jmercier这是因为在本例中,您的
:myLimit
被视为字符串和
执行(数组)(…这里的所有内容都被视为字符串…)