2012-09-18 85 views
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被存储在其中。以下是我正在显示的代码mysql连接没有正确执行

$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"); 
+0

您可以别名的列: 'SELECT mymembers.id AS mymember_id,forum_posts.id AS postid,...' – andrewsi

回答

3

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

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

SELECT mymembers.id as id, forum_posts.id as fpID, etc... 
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