2017-01-01 3 views
-3

Может кто-нибудь, пожалуйста, проверьте, что случилось с моим сценарием ниже.Ошибка нарушения синтаксиса разбиения на страницы PDO

Я получаю «PHP Fatal error: Uncaught exception« PDOException »с сообщением« SQLSTATE [42000]: ошибка синтаксиса или нарушение доступа: 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>"; 
+0

Пожалуйста, изменить название вашего вопроса к чему-то более уместной ... – Dekel

+0

ПРЕДЕЛ: старт ,: limit это добавит одинарные кавычки к вашему запросу и вызовет синтаксическую ошибку. Бросьте целое число с PDO :: PARAM_INT – user3606329

+0

Большое вам спасибо, он сработал. –

ответ

1
$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"] . ' '; }