PDO分页语法违规错误
问题描述:
有人可以检查下面我的脚本有什么问题。PDO分页语法违规错误
我收到“PHP致命错误:带有消息'SQLSTATE [42000]的未捕获异常'PDOException':语法错误或访问冲突:1064您的SQL语法中有错误;请检查与您的MySQL相对应的手册服务器版本使用附近的“” 0' 正确的语法,'1”第1' 行”
$limit = 1;
$p=$_GET['p']=="" ? 1:$_GET['p'];
$start=($p-1)*$limit;
$sa_stmt = $db->prepare('SELECT * FROM members WHERE referral=:username ORDER BY memberID LIMIT :start, :limit');
$sa_stmt->execute(array(
':username' => $_SESSION['username'],
':start' => $start,
':limit' => $limit
));
while($info = $sa_stmt->fetch(PDO::FETCH_ASSOC)){
$norec = "yes";
echo ''.$info["username"] . ' '; }
$count=$db->prepare("SELECT COUNT(memberID) FROM members WHERE referral=:username ORDER BY memberID");
$count->execute(array(':username' => $_SESSION['username']));
$count=$count->fetchColumn();
$countP=(ceil($count/$limit)) + 1;
$tW=($countP*50) + $countP;
echo"<center style='overflow-x:auto;margin-top:10px;padding-bottom:10px;'>";
echo"<div style='width:".$tW."px'>";
for($i=1;$i<$countP;$i++){
$isC=$i==$_GET['p'] ? "b-green":"";
echo "<a href='?p=$i'><button class='pgbutton $isC'>$i</button></a>";
}
echo"</div>";
echo"</center>";
答
$sa_stmt = $db->prepare('SELECT * FROM members WHERE referral=:username ORDER BY memberID LIMIT :start, :limit');
$sa_stmt->bindValue(":username", $_SESSION['username'], PDO::PARAM_INT);
$sa_stmt->bindValue(":start", $start, PDO::PARAM_INT);
$sa_stmt->bindValue(":limit", $limit, PDO::PARAM_INT);
$sa_stmt->execute();
while($info = $sa_stmt->fetch(PDO::FETCH_ASSOC)){
$norec = "yes";
echo ''.$info["username"] . ' '; }
请改变你的问题的标题更相关的事情... – Dekel
LIMIT:启动,:限制此操作将为您的查询添加单引号并导致语法错误。用PDO :: PARAM_INT投射到一个整数 – user3606329
非常感谢,它已经工作。 –