PHP查询调用问题


PHP Query Call Issue

我的数据库中有两个表:

1) 博客表2) 内容

blog_table中,我具有被称为postID的值,这些值可能与表content中被称为id的值匹配,也可能不匹配。我想知道如何编写while循环或foreach循环,该循环将循环通过content表,如果id等于blog_tablepostID的值,则执行一个操作,如果不等于,则执行另一个操作。

现在我只能得到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>";
}

[根据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
    }
}

关于不同的设计,我不能确定它是否有必要,但我不喜欢运行这样的查询循环。我认为在这种情况下,一个查询就足以获得所需的一切。也许如果您描述您的应用程序,我们可以找到更好的查询或更合适的设计。

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

我建议使用内部联接,这将解决手头的问题。

例如:

从内容中选择*作为C INNER在B.postID=C.id 上加入$blog_table作为B

这里有一个关于联接(内部、左侧、右侧、完整)的精彩介绍:

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

$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
  }
}