PHP查询调用问题

时间:2012-03-09 06:16:20

标签: php mysql while-loop

我的数据库中有两个表:

1)blog_table 2)内容

blog_table中,我有一个名为postID的值,可能与表id中名为content的值匹配,也可能不匹配。我想知道如何编写一个while循环或foreach循环,它将循环遍历content表,如果id等于postIDblog_table的值,则执行一个操作如果没有,则执行不同的操作。

现在我只能id = postID

$blog_table = $_REQUEST['blog_table'];  
$getblogtable = mysql_query("SELECT * FROM content WHERE type = '5' AND blogID = '{$_REQUEST['id']}' ORDER BY `order` ASC");

while ($row = mysql_fetch_assoc($getblogtable)) 
{
$getblogposts1 = mysql_query("SELECT postID FROM `$blog_table`");
while ($row1 = mysql_fetch_assoc($getblogposts1)) 
{
 if( $row1['postID'] == $row['id']) {
      echo "do something<br>";
 }else{
     echo "do something else<br>";
 }
} echo "<p></p>";
}

3 个答案:

答案 0 :(得分:2)

[根据OP的评论和修改后的问题进行编辑]

$getblogposts = mysql_query("SELECT * FROM content WHERE type = '5' AND blogID = '{$_REQUEST['id']}' ORDER BY `order` ASC");
while ($row = mysql_fetch_assoc($getblogposts))
{
    $matches = mysql_query("SELECT * FROM $blog_table WHERE postID = $row['id']");
    if (mysql_num_rows($matches) > 0)
    {
        // do something
    }
    else
    {
        // do something else
    }
}

对于不同的设计,我无法肯定地说这是必要的,但我不喜欢像这样运行一系列查询。我认为一个查询应该足以在这种情况下获得所需的一切。也许如果你描述你的应用程序,我们可以找到更好的查询或更合适的设计。

答案 1 :(得分:1)

为您的问题提供更易于查看的解决方案。

我建议使用内连接来解决手头的问题。

例如,像:

SELECT * FROM content AS C INNER JOIN $ blog_table AS B. on B.IDtID = C.id

以下是对连接(内部,左侧,右侧,完整)的精彩介绍:

http://www.w3schools.com/sql/sql_join.asp

答案 2 :(得分:0)

$blog_table = $_REQUEST['blog_table'];  
$getblogtable = mysql_query("SELECT postID FROM `$blog_table`");

while ($row = mysql_fetch_assoc($getblogtable)) 
{
  $postID = $row['postID'];
  $getblogposts1 = mysql_query("SELECT * FROM content WHERE id = '$postID' ORDER BY `order` ASC");
  while ($row1 = mysql_fetch_assoc($getblogposts1)) 
  {
     // if( $row1[id] == $postId )
     //     do something
     // else
     //     do something else
  }
}