Php PDO发出带有限制的语法错误
我的PDO有一个sintax错误 当我尝试使用以下限制进行准备好的查询时: 限制:myLimit'); 我在mysql中有一个错误:'( 这是怎么回事 当我把数字放进去时,它是可以的,就像这样:限制2Php 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
<?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
被视为字符串和执行(数组)(…这里的所有内容都被视为字符串…)