我的数据库中有两个表:
1)blog_table 2)内容
在blog_table
中,我有一个名为postID
的值,可能与表id
中名为content
的值匹配,也可能不匹配。我想知道如何编写一个while循环或foreach循环,它将循环遍历content
表,如果id
等于postID
中blog_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>";
}
答案 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
以下是对连接(内部,左侧,右侧,完整)的精彩介绍:
答案 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
}
}