0
$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 。'' 。$作者。';

我想将 $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");
4

2 回答 2

3

最好的做法是列出查询中的所有字段。

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

SELECT mymembers.id as id, forum_posts.id as fpID, etc...
于 2012-09-18T18:54:37.473 回答
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  
于 2012-09-18T19:01:26.433 回答