pdo->查询或/和预处理语句中的PHP值

时间:2013-07-01 13:10:13

标签: pdo

我将页面上显示的评论数量限制为2,$ second_count会计算超过2个限制的帖子数量,并显示“显示所有评论”,这就是它的用途。

如果查看变量$ 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;
}

更新

这就是$ 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);
        }
    }
?>

2 个答案:

答案 0 :(得分:-1)

好吗:

  

如果查看变量$ limitPost,我该如何添加另一个   里面的变量。

     

这是我试图用PDO完成的目标。

不可能&lt; - 这是你问题的答案

答案 1 :(得分:-1)

而不是:

:second_count

尝试:

DESC LIMIT 2

进入准备好的声明。你真的不需要在你准备好的语句中使用参数:second_count,因为它是一个常量字符串。

如果出现以下情况,则可以进行SQL注入:second_count是用户的输入,因为它是常量,不可能这样。

为什么你在做什么不起作用:

  1. DESC LIMIT 2不是整数参数,因此绑定应该失败或发出垃圾。
  2. 如果要在绑定上使用PDO :: PARAM_STR,则:second_count将被放入qoutes中,因此sql语句将失败。