2

あるクエリの結果を別のクエリの入力として使用しようとしていますが、困惑しています。JOIN の使用を考えましたが、この場合、2 つのクエリを別々に実行する必要があると思います。基本的に、データベースに記事のリストがあります。最初のクエリから取得したリストまたは記事をループするときに、2 番目のテーブルを検索して、各記事の投票数を調べます。

これはコードです:

<?php
  $sql=mysql_query("SELECT * FROM discussion_links WHERE link_side = 'Michigan'");
  while($row = mysql_fetch_array($sql)) {
?>

<div class="top-links-wrapper">
    <div>
       <div class="link-info">
           <a class="link-title" href="http://<?php echo $row['link_url'] ?>">
           <?php echo $row['link_title'] . "</a>"; ?>
           <p class="link-source"><?php echo $row['link_source'] . "</p>" ?>
       </div>
       <div class="link-vote-wrapper">
           <span class="link-votes">
           <?php    
                $sql2=mysql_query("SELECT * FROM link_votes WHERE link_id = " . $row['link_id'] .")";
                $num_rows = mysql_num_rows($sql2);
                echo "$num_rows";
            ?>
           </span>
       </div>
    </div>
</div>

ありがとう

4

3 に答える 3

7

両方のクエリに参加できますこれを試してください

SELECT dl.* , lv.*
FROM discussion_links dl
LEFT JOIN link_votes lv ON lv.link_id = dl.link_id
WHERE link_side = 'Michigan'
于 2012-06-13T18:03:20.413 に答える
1

変化する

$sql2=mysql_query("SELECT * FROM link_votes WHERE link_id = " . $row['link_id'] .")";

$sql2=mysql_query("SELECT * FROM link_votes WHERE link_id = " . $row['link_id']);

閉じ括弧)はクエリではなく関数呼び出しの一部です

または、単一のクエリを作成することをお勧めします:

SELECT * FROM discussion_links d 
JOIN link_votes v
on d.link_id = v.link_id
WHERE d.link_side = 'Michigan'

を置き換えて、SELECT *必要な列を選択するだけです

于 2012-06-13T18:00:06.227 に答える
0

修正済み、2 番目のクエリにエラーがありました:

$sql2=mysql_query("SELECT * FROM link_votes WHERE link_id = " . $row['link_id']);

それは今動作します。

于 2012-06-13T18:04:15.463 に答える