2013-07-01 102 views
-2

我將頁面上顯示的評論數量限制爲2,$ second_count會計算有多少帖子是否超過2個帖子,並顯示一個顯示所有評論,這就是爲了什麼。pdo->查詢或/和預處理語句中的PHP值

如果你看看變量$ limitPost,我該如何在裏面添加參數。

這是我試圖完成的,但與PDO。

$ limitPost = 「DESC LIMIT $ second_count,2」; 但這可能導致SQL INJECTIONS我的理解。

PUBLIC FUNCTION userComments($post_iD,$second_count) 
{ 
    $limitPost = "DESC LIMIT 2"; 
    $sth = $this->db->prepare("SELECT C.com_id, C.uid_fk, C.comment, C.created, U.username, U.photo 
           FROM comments C, users U 
           WHERE U.status='1' AND C.uid_fk = U.uiD 
           AND C.msg_id_fk = :postiD 
           ORDER BY C.com_id < :second_count"); 
    $sth->bindParam(':postiD', $post_iD, PDO::PARAM_INT);    
    $sth->bindParam(':second_count', $limitPost, PDO::PARAM_INT); 
    $sth->execute(); 

    $data = $sth->fetchAll(); 
    return $data; 
} 

UPDATE

這是$ second_count是什麼,它只是計算,如果有2條評論顯示,它會隱藏所有的休息,如果我按顯示所有評論它會擴大。

<?php 
    $x=1; 
    if($x){ 
     $comment_count = count($commentsarray); 
     $second_count = $comment_count-2; 

     if($comment_count>2){ 
?> 
     <div class="comment_ui" id="view<?php echo $post_iD;?>"> 
      <a href="#" class="view_comments" id="<?php echo $post_iD;?>">Show all <?php echo $comment_count;?> comments</a> 
     </div> 
<?php 
     $commentsarray = $Wall->userComments($post_iD, $second_count); 
     } 
    } 
?> 
+1

你的代碼沒有意義。讓它至少在沒有準備好聲明的情況下工作 –

+0

謝謝你的常識,至少回答。代碼工作正常,沒有什麼問題.. – iBrazilian

+0

哦,不,它不。 –

回答

-1

好嗎:

如果你看看變量$ limitPost,我怎麼添加其他 變量裏面。

這是我試圖完成的,但與PDO。

不可能< - 這是回答你的問題

-1

代替:

:second_count 

嘗試:

DESC LIMIT 2 

到事先準備好的聲明。由於它是一個常量字符串,因此您在預準備語句中確實不需要參數:second_count。

SQL注入將是可能的,如果:second_count是用戶的輸入,因爲它是恆定的,沒有這樣的可能。

爲什麼你在做什麼是不工作:

  1. DESC LIMIT 2不是一個整數參數,所以綁定失效或發出的垃圾。
  2. 如果您要在綁定上使用PDO :: PARAM_STR,則::second_count將被放入qoutes中,因此sql語句將失敗。