$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();
,但它不會執行,給我和錯誤,而不是:
異常「PDOException」有消息「SQLSTATE [42000 ]:語法錯誤或訪問衝突:1064您的SQL語法錯誤;請檢查與您的MySQL服務器版本相對應的手冊,以便在C:\ htdocs \ lr \ topic.php:577堆棧跟蹤:#0 C附近的':topic_id ORDER BY posts.post_id ASC'處使用正確的語法:\ htdocs中\ LR \ topic.php(577):PDO->查詢( 'SELECT ???? ...')#1 {}主要
如果我不準備發言,並我使用正常的變量,查詢執行得很好。
我的錯誤是什麼?
另一個常見的問題後,再執行:確保'$ start'和'$ per_page'和'$ topic_id'包含實際的整數值。使用'var_dump()'來驗證。 – hakre
'near':topic_id ORDER BY posts.post_id在第25行的ASC'它看起來像你發佈的查詢不完全是給出錯誤的那個? (你的這裏有「:topic_id ORDER BY:sort LIMIT」) –
Jup,即使這樣,不使用'prepare'。這需要首先解決。 – hakre