mysql join没有正确执行

时间:2012-09-18 18:51:05

标签: php mysql join left-join

$sql = mysql_query("
    SELECT * 
    FROM forum_posts 
    LEFT JOIN mymembers ON forum_posts.post_author_id = mymembers.id 
    WHERE section_id='$sid' ORDER BY date_time DESC LIMIT 25
");
$dynamicList = "";
$numRows = mysql_num_rows($sql);

while($row = mysql_fetch_array($sql)){
    $reply_author_id = $row["post_author_id"];
    $author = $row["username"];
    $id = $row["id"];
    $anon = $row["anon"];
    $post_body=$row["post_body"];
    $post_author_id = $row["post_author_id"];
    $date_time = $row["date_time"];
    $thread_title = $row["thread_title"];

这是我正在执行的mysql查询。问题是表mymembers和forum_posts都有id字段,所以当我使用$ id并保存'id'时,成员的id存储在其中。以下是我正在展示的代码

$displayList .= '<a href="view_thread1.php?id=' . $id .'"> 

'。 $ thread_title。 ''。 $ author。';

我想将$ reply_author中的成员的id和线程的id保存到$ id变量中。

有没有办法可以在不更改表格中的列名的情况下完成。

完成更改查询的工作。现在代码看起来像

$sql = mysql_query(
"SELECT forum_posts.post_author_id AS post_author_id, forum_posts.id AS id,    mymembers.username, forum_posts.anon,forum_posts.post_body,forum_posts.thread_title, forum_posts.date_time FROM forum_posts LEFT JOIN mymembers ON forum_posts.post_author_id=mymembers.id WHERE section_id='$sid' ORDER BY date_time DESC LIMIT 25");

2 个答案:

答案 0 :(得分:3)

这样做的最佳做法是列出查询中的所有字段。

而不是使用SELECT *将其更改为:

SELECT mymembers.id as id, forum_posts.id as fpID, etc...

答案 1 :(得分:0)

无需更改数据库中的列名,只需在查询中重命名:

SELECT members.id as reply_author
       members.username,
       [... other membes columns listed as the above ...]
       forum_posts.*
FROM   forum_posts
       LEFT JOIN mymembers
              ON forum_posts.post_author_id = mymembers.id
WHERE  section_id = '$sid'
ORDER  BY date_time DESC
LIMIT  25