我有这个查询:
$query = $db->query("SELECT
posts.post_topic_id,
posts.post_content,
posts.post_id,
posts.post_date,
posts.post_by,
posts.post_votes_total,
posts.post_suggested_amount,
posts.post_accepted,
posts.post_last_edited,
posts.post_edit_sum,
users.user_id,
users.username
FROM
posts
JOIN
users
ON
posts.post_by = users.user_id
WHERE
posts.post_topic_id = :topic_id
ORDER BY
:sort
LIMIT :start , :per_page
");
$query->bindParam(':topic_id', $topic_id, PDO::PARAM_INT);
$query->bindParam(':sort', $sort, PDO::PARAM_STR);
$query->bindParam(':start', $start, PDO::PARAM_INT);
$query->bindParam(':per_page', $per_page, PDO::PARAM_INT);
$query->execute();
但它不会执行,而是给我和错误:
带有消息“SQLSTATE [42000]”的异常“PDOException”:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法,以便在 C:\htdocs\lr\topic.php:577 中的 ':topic_id ORDER BY posts.post_id ASC ' at line 25' 附近使用正确的语法:577 堆栈跟踪:#0 C :\htdocs\lr\topic.php(577): PDO->query('SELECT???? ...') #1 {main}
如果我不准备语句,而我使用普通变量,则查询执行得很好。
我的错误是什么?