[英]“bindParam” with multi-parameters after “Limit” couldn't work in php?
我遇到了這個問題,找不到解決辦法,有高手可以幫幫我嗎?
public function getComments($postId,$pageCmt){
$db = $this->dbConnect();
$cmtNb=3;
$r=($pageCmt-1)*3;
$req = $db->prepare('SELECT id, comments FROM comments WHERE post_id = ? ORDER BY ind_date DESC,date_comments DESC LIMIT ? OFFSET ?' );
$req->bindParam(1,$postId,\PDO::PARAM_INT);
$req->bindParam(2,$cmtNb,\PDO::PARAM_INT );
$req->bindParam(3,$r,\PDO::PARAM_INT);
$req->execute(array($postId,$cmtNb,$r));
return $req;
}
問題似乎來自 LIMIT 之后的參數,因為如果我取消“LIMIT?OFFSET?” 代碼可以與第一個參數 $postId 一起使用,將獲取評論,
但是,如果我添加帶有“LIMIT?OFFSET?”的代碼。 在頁面上不會獲取任何評論,但也沒有顯示錯誤,
任何想法?。
謝謝。
在這種情況下,您可以嘗試將值直接連接到查詢中,因為該值不能被用戶欺騙,這些值是在服務器端設置的。
此外,您不需要使用bindParam()
並將值傳遞給execute()
。
您的代碼可以修改為
$req = $db->prepare('SELECT id, comments FROM comments WHERE post_id = ? ORDER BY ind_date DESC,date_comments DESC LIMIT {$cmtNb} OFFSET {$r}' );
$req->execute(array($postId));
如果您需要使用用戶為LIMIT
或OFFSET
指定的值,則需要在運行查詢之前在服務器端驗證該值是否應該被接受。
我今天得到了解決方案:
通過仍然使用“ LIMIT?OFFSET?” 接着:
$req->bindValue(1,$postId,\PDO::PARAM_INT);
$req->bindValue(2,$cmtNb,\PDO::PARAM_INT );
$req->bindValue(3,$r,\PDO::PARAM_INT);
var_dump($r);
$req->execute();
它今天完美運行,。 謝謝你們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.