0

基本的に私は2つのテーブルを持っています

  • トピック
  • ユーザー

「topics」の「posted_by」を「users」の「user_id」にリンクできるように、左結合を使用しようとしています。これにより、表示用の users.username と users.profile( の両方を出力できます。アバター画像)。

これが私の現在のコードで、ブール値のエラーが発生しています。

        <?php
    include 'core/init.php';
    include 'includes/overall/header.php';

    $sql = " SELECT *, users.id, users.username, users.profile
        FROM `topics` 
        LEFT JOIN
        users ON topics.posted_by = " . mysql_real_escape_string($_GET['topic_id']) . " users.user_id ORDER BY `posted` DESC";

    $result = mysql_query($sql);

    // Start looping table row
    while($rows = mysql_fetch_array($result)){
    ?>
    <table>
      <tr> 
        <td rowspan="4"> Avatar code to go here<br>
           <? echo $rows['username']; ?></td>
        <td><? echo $rows['category']; ?> > <? echo $rows['sub_category']; ?> </td>
      </tr>
      <tr>
        <td><? echo $rows['posted']; ?></td>
      </tr>
      <tr>
        <td><? echo $rows['topic_data']; ?></td>
      </tr>
      <tr>
        <td><a href="view_topic.php?id=<? echo $rows['topic_id']; ?>">Reply</a> (<? echo $rows['reply']; ?>) Replies</td>
      </tr>
    </table>

    <?php
    // Exit looping and close connection 
    }
    mysql_close();
    ?>
4

3 に答える 3

0

ON topics.posted_by = " . mysql_real_escape_string($_GET['topic_id']) . " users.user_idON topics.posted_by = 1 users.user_idたとえば、これが無効な SQL 構文であることがわかります。代わりに WHERE を使用してください

ON topics.posted_by = users.user_id WHERE topics.id = (topic_id_variable)

PS: 使用mysql_は強くお勧めしません。API を変更する必要があります。

于 2013-07-11T13:58:08.723 に答える
0

結合句でどのようusersに関連するかを指定する必要があります。topicsjoin 句に外部変数を指定しました。これにより、データベース エンジンは、2 つのテーブルを結合する方法について関係を確立できません。

あなたが期待しているクエリは次のようなものでなければならないと思います

$sql = " SELECT *, users.id, users.username, users.profile
        FROM `topics` 
        LEFT JOIN
        users ON topics.posted_by = users.user_id 
        WHERE topics.id = '" . mysql_real_escape_string($_GET['topic_id']) . "'
        ORDER BY `posted` DESC";
于 2013-07-11T13:58:23.513 に答える