【发布时间】:2015-02-12 15:36:50
【问题描述】:
对于我的新闻和评论系统,我无法从 2 个表(tbl_news 和 tbl_cmets)中获取查询结果。在我用 mysqli 制作的另一个程序中,内部连接有效,但现在使用 PDO 我无法让它工作。
这是我的代码:
$newsQuery = $db->prepare("SELECT *
FROM tbl_news
INNER JOIN tbl_comments ON tbl_news.news_id = tbl_comments.news_id
ORDER BY news_id DESC
LIMIT 5");
$newsQuery -> execute();
while($newsFetch = $newsQuery->fetch(PDO::FETCH_OBJ)) {
echo "<div class='news-post'><h3 class='post-title'>" . $newsFetch->title . "</h3>
<p style='float:left'>By: <span class='post-author'>" . $newsFetch->author . "</span></p>
<p style='float:right'>Date: <span class='post-date' style='font-style:italic;'>" . $newsFetch->date . "</span></p>
<br><p>" . $newsFetch->text . "</p></div>";
if(isset($_SESSION['user']) && ($newsFetch->comments == '1')) {
echo "Comments(";
echo "<div id='commentClick'>Click <a href='#' id='openForm'>here</a> to post a comment</div>";
echo "<form class='navbar-form' id='commentForm'><input style='margin-right:5px' type='text' size='80%' name='commentText' placeholder='Type your comment here'><input type='submit' class='btn btn-primary btn-xs' value='Send'></form>";
}elseif(!isset($_SESSION['user']) && ($newsFetch->comments == '1')) {
echo "Click here to view comments. If you want to post comments please login first";
}else{
echo "Comments are disabled for this news item";
}
}
在数据库中,我有以下值: 在 tbl_news 中有一个 news_id,在 tbl_cmets 中有 comment_id、news_id 和 user_id。
提前致谢!
【问题讨论】:
-
比说它不起作用更具体。它和我回答你有错误一样有帮助。
-
这是错误:[14-Dec-2014 06:07:27 America/New_York] PHP 致命错误:未捕获异常 'PDOException' 并带有消息 'SQLSTATE[23000]:完整性约束违规:1052 /home/mikeoerl/public_html/index.php:32 中的 order 子句中的列 'news_id' 不明确' 堆栈跟踪:#0 /home/mikeoerl/public_html/index.php(32): PDOStatement->execute() #1 {main} 在第 32 行的 /home/mikeoerl/public_html/index.php 中抛出
-
查询只使用“SELECT * FROM tbl_news”。但我还需要在同一个 fetch_obj 中添加 cmets
-
您在两个表中都有一个同名的列,您需要在该列之前指定表名。将相关列的
select *替换为SELECT col1,col2,tbl_news.news_id,tbl_comments.news_id,...。 -
我当时不是那样做的吗? tbl_news.news_id = tbl_cmets.news_id