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

メンバーの ID を $reply_author に保存し、スレッドの 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 に答える