if-else语句,在while-loop/php中使用循环

if-else语句,在while-loop/php中使用循环,php,mysql,html,Php,Mysql,Html,我承认现在我已经通过了所有的帖子,虽然我通过了2008年。我的问题是if-else语句只接收一行,而调用while循环的所有其他行false,或者在使用表单时接收2行。我试图查看是否在所有行中使用两个不同的数据库购买某个项目。这是代码 $id2 = $_SESSION['id']; $naturesql = mysql_query("SELECT * FROM backgrounds WHERE type=2"); while($row = mysql_fetch_array

我承认现在我已经通过了所有的帖子,虽然我通过了2008年。我的问题是if-else语句只接收一行,而调用while循环的所有其他行false,或者在使用表单时接收2行。我试图查看是否在所有行中使用两个不同的数据库购买某个项目。这是代码

$id2 = $_SESSION['id'];
$naturesql = mysql_query("SELECT * FROM backgrounds WHERE type=2");
while($row = mysql_fetch_array($naturesql)) {
    $id = $row['id'];
    $name = $row['name'];
    $background = $row['background'];
    $pic = $row['image'];

    $check = mysql_query("SELECT * FROM store_items WHERE userid='$id2'");
    while($checkrow = mysql_fetch_array($check)) {
        $types = $checkrow['type2'];
    }

    if($id == $types) {
        $bought = 'This item has already been bought';
    } else {
        $bought = '<form>
                   </form>';
    // this form works fine
    }

    $display .= '<table width="100%"><tr><td><center><font size="+1">' . $name . '</font></center></td></tr><tr><td><center><img src="' . $pic . '" width="80px"></img></center></td></tr><tr><td>' . $bought . ' </td></tr></table>';
}

...

<?php echo $display ?>
$id2=$\u会话['id'];
$naturesql=mysql_查询(“从type=2的背景中选择*);
while($row=mysql\u fetch\u数组($naturesql)){
$id=$row['id'];
$name=$row['name'];
$background=$row['background'];
$pic=$row['image'];
$check=mysql_查询(“从存储_项中选择*,其中userid='$id2');
while($checkrow=mysql\u fetch\u数组($check)){
$types=$checkrow['type2'];
}
如果($id==$types){
$BUNDED='此项目已购买';
}否则{
美元
';
//这个表格很好用
}
$display.=''.$name'.$bunded'.';
}
...
出现了什么

第一个结果 名字1 图1 表格显示在这里

第二个结果 名称2 图2 表单也显示在这里

第三个也是最后一个结果 名字3 图3 这个东西已经买了

这是我在页面上看到的。如果我买了一件东西,这就是我得到的东西,比如说第一件

第一个结果 名字1 图1 这个东西已经买了

第二个结果 名称2 图2 表单也显示在这里

第三个也是最后一个结果 名字3 图3 这个东西已经买了

它会弹出这个。虽然当我刷新时会返回到第一个,但我只显示了一个结果。有没有想过为什么不和其他人一起工作

如果你买的都是,但不是,那应该是这样的

第一个结果 名字1 图1 这个东西已经买了

第二个结果 名称2 图2 这个东西已经买了

第三个也是最后一个结果 名字3 图3 这个东西已经买了


我唯一的另一个问题是,还有一种替代方法,可以保持循环并检查该语句是否与if-else语句相同。如果我不能用If-else语句来完成它。

首先,您可以在1个查询中总结这一点(它不在2个数据库中,但在2个表中,它似乎来自您的代码)

为什么
$id2=$\u会话['id']?会话ID与用户ID不同


你应该在构建你的问题和代码时多做些努力,让我们更容易理解。

我不能在这里发布所有内容,尽管这里应该给出一些我在网站上为实现这一点所做的工作。令人惊讶的是,它像一个魅力。请注意,在一个mysql_查询中放入两个表并没有任何帮助,只会让事情变得更糟。所以我不建议这样做

我做的简单版本

$id = $_SESSION[id];

      $check = mysql_query("SELECT * FROM store_items WHERE userid='$id2'");
while($checkrow = mysql_fetch_array($check)){

$types = $checkrow['type2'];



}


    $naturesql = mysql_query("SELECT * FROM backgrounds WHERE type=2");
while($row = mysql_fetch_array($naturesql)) {
    $id = $row['id'];
    $name = $row['name'];
    $background = $row['background'];
    $pic = $row['image'];


$check = mysql_query("SELECT * FROM store_items WHERE userid='$id2' AND type=2 AND type2='$id' AND other='$pic'");
while($checkrow = mysql_fetch_array($check)) {
    $types = $checkrow['type2'];

}
if($id == $types) {
    $bought = 'This item has already been bought';
} else {
    $bought = '<form>
               </form>';
// this form works fine
}


$display .= '<table width="100%"><tr><td><center><font size="+1">' . $name . '</font></center></td></tr><tr><td><center><img src="' . $pic . '" width="80px"></img></center></td></tr><tr><td>' . $bought . ' </td></tr></table>';

}
$id=$\u会话[id];
$check=mysql_查询(“从存储_项中选择*,其中userid='$id2');
while($checkrow=mysql\u fetch\u数组($check)){
$types=$checkrow['type2'];
}
$naturesql=mysql_查询(“从type=2的背景中选择*);
while($row=mysql\u fetch\u数组($naturesql)){
$id=$row['id'];
$name=$row['name'];
$background=$row['background'];
$pic=$row['image'];
$check=mysql_query(“从存储_项中选择*,其中userid='$id2'和type=2,type2='$id'和other='$pic');
while($checkrow=mysql\u fetch\u数组($check)){
$types=$checkrow['type2'];
}
如果($id==$types){
$BUNDED='此项目已购买';
}否则{
美元
';
//这个表格很好用
}
$display.=''.$name'.$bunded'.';
}

就像我答应过的,如果我弄明白了,我会发帖的。可能会比我希望的时间长一点,但好了。

正如你所知,
$buyed=
中没有开头引号。minitech,看起来像是复制粘贴issue@Richard:我知道,我本来打算编辑它并指出它(以防万一),但我只是做了一个大的清理,所以花了一段时间。你的代码不是有效的php。我尽可能地把它整理好了,但这实际上是行不通的。当我看到PHP代码没有用来防止漏洞时,我很担心。我希望您的
$\u会话['id']
在这里未显示的代码中设置为卫生的内容。如果没有,请考虑重新编写代码来使用PDO编写的语句。遗憾的是,这并不像您所想的那样真实。会话['id']可以等于用户id,您只需要知道如何操作即可。
$id = $_SESSION[id];

      $check = mysql_query("SELECT * FROM store_items WHERE userid='$id2'");
while($checkrow = mysql_fetch_array($check)){

$types = $checkrow['type2'];



}


    $naturesql = mysql_query("SELECT * FROM backgrounds WHERE type=2");
while($row = mysql_fetch_array($naturesql)) {
    $id = $row['id'];
    $name = $row['name'];
    $background = $row['background'];
    $pic = $row['image'];


$check = mysql_query("SELECT * FROM store_items WHERE userid='$id2' AND type=2 AND type2='$id' AND other='$pic'");
while($checkrow = mysql_fetch_array($check)) {
    $types = $checkrow['type2'];

}
if($id == $types) {
    $bought = 'This item has already been bought';
} else {
    $bought = '<form>
               </form>';
// this form works fine
}


$display .= '<table width="100%"><tr><td><center><font size="+1">' . $name . '</font></center></td></tr><tr><td><center><img src="' . $pic . '" width="80px"></img></center></td></tr><tr><td>' . $bought . ' </td></tr></table>';

}