2014-02-17 40 views
-4

我一个评论系统中,我会想从两个表中提取信息的工作,问题是从第一个查询(被发现的ID)的结果影响第二次查询的输出。我的桌子是这样的。PHP连接MySQL查询

成员

标识,名字,姓氏,电子邮件,密码,Img_url,Activation_No,激活和日期

帖子

帖子ID,电子邮件,文本,ForumId,DatePosted,好恶

我正在使用的代码是;

<?php 
    // retrive post 
    include('php/config.php'); 
    include ('php/function.php'); 

    // retrive comments with post id 

$stmt = $mysqli->prepare("SELECT (posts.Email,posts.Text) FROM posts WHERE posts.ForumId = '$forumId' LEFT JOIN SELECT (members.Img_url) FROM members WHERE members.Email = (posts.Email)"); 
$stmt->execute(); 
$stmt->bind_result($PostId,$Email,$Text,$ForumId,$DatePosted,$Likes,$Dislikes,$usr_img); 
$stmt->fetch(); 
    print "<div class=comment-item>"; 
    print "<div class=comment-avatar>"; 
    print "<img src=".$usr_img."alt=avatar>"; 
    print "</div>"; 
    print "<div class=comment-post>"; 
    print  "<h4>" .$Email. "<span> said....</span></h4>"; 
    print  "<p>" .$Text. "</p>"; 
    print "</div>"; 
    print"</div>"; 
$stmt->close(); 
?> 

我收到的错误信息是;

Fatal error: Call to a member function execute() on a non-object in C:\Users\PC\Documents\XAMPP\htdocs\post.php on line 90

+1

手动运行查询(通过mysql界面,或通过控制台),并做错误? –

+1

您的查询是错误的,谷歌MySQL左连接正确的语法。当你修复你的查询时,致命错误将被单独修复 – CodeBird

回答

1

您的SQL查询出错。 试试这个

SELECT posts.Email, posts.Text, members.Img_url 
FROM posts 
LEFT JOIN members 
    ON members.Email = posts.Email 
WHERE posts.ForumId = '$forumId' 
0

prepare()查询失败,所以$stmt是一个非对象。它看起来像你的查询语法错了,因为你不能有WHERELEFT JOINJOIN使用ON没有WHERE。尝试像这个 -

$stmt = $mysqli->prepare("SELECT posts.Email,posts.Text, members.Img_url FROM posts LEFT JOIN members ON members.Email = posts.Email WHERE posts.ForumId = '$forumId'") ; 
0
SELECT posts.Email, posts.Text, members.Img_url 
FROM posts 
LEFT JOIN members ON members.Email = posts.Email 
WHERE posts.ForumId = '$forumId' 

你真的应该检查出的MySQL的句法。你在这里犯了一些错误;) 我希望它是这样工作的。