pdo->query 或/和预准备语句中的 PHP 值

  • 本文关键字:语句 PHP query pdo- pdo
  • 更新时间 :
  • 英文 :


我将页面上显示的评论数量限制为2,如果超过2,$second_count将计算帖子的数量,这将限制并显示show All评论,这就是目的。

如果你查看变量$limitPost,我如何在其中添加参数。

这是我正在努力实现的,但有了PDO。

$limitPost="DESC LIMIT$second_count,2"但据我所知,这可能会导致SQL拒绝

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条评论显示,它会隐藏所有其他评论,如果我按show所有评论,它会扩展。

<?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);
        }
    }
?>

好的:

如果你查看变量$limitPost,我该如何添加另一个内部变量。

这是我正在努力实现的,但有了PDO。

不可能<-这就是你的问题

的答案

而不是:

:second_count

尝试:

DESC LIMIT 2

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

如果:second_count是用户的输入,SQL注入是可能的,因为它是常量,所以不可能这样。

为什么你所做的不起作用:

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

最新更新