-1

我有这个代码:

include('config.php');

$result = mysql_query("SELECT * FROM system");
while($row = mysql_fetch_array( $result )) {
    $name_system = $row['name'];
    $value_system = $row['value'];

    if($name_system=='website_register' AND $value_system==1)
        {$register_system = 1;}
    else
        {$register_system = 0;}

    if($name_system=='website_offline' AND $value_system==1)
        {$offline_system = 1;}
    else
        {$offline_system = 0;}
}

我的问题是循环只显示“系统”表中的最后一条记录。

4

6 回答 6

1

我的问题是循环仅显示最后一条记录

不,问题在于循环没有显示任何内容。显示随后发生,在循环之外的代码中,因此只执行一次,当光标浏览整个表并且只有最后一行保留$row打印时。

在循环内echo移动执行orprint或任何操作的代码,它就会工作。

于 2012-09-21T15:18:59.210 回答
0

这是草率的,但它会告诉你在循环中发生了什么:

include('config.php');

$result = mysql_query("SELECT * FROM system");
while ($row = mysql_fetch_array($result)) {
    $name_system = $row['name'];
    $value_system = $row['value'];

    if($name_system=='website_register' AND $value_system==1)
    {$register_system = 1;}
    else
    {$register_system = 0;}

    if($name_system=='website_offline' AND $value_system==1)
    {$offline_system = 1;}
    else
    {$offline_system = 0;}

    print "$name_system, $value_system, $register_system, $offline_system<br />";
}
于 2012-09-21T15:18:49.863 回答
0

您的问题是您每次都在同一个变量上覆盖最后一个值。相反,将其添加为数组中的新单元格。例如每个地方而不是做

$register_system = 1;

$register_system[] = 1;

最后,您可以print_r($register_system)看到所有的价值。您会注意到数组的键是 0,1,... 您可以考虑使用$row['name']作为键,如下所示:

$register_system[$row['name']] = 1

当然,假设这些是不同的值。

于 2012-09-21T15:19:14.060 回答
0

echo/print需要在循环内。

于 2012-09-21T15:19:14.167 回答
0

尝试在必要的地方使用 break ......

使用标志变量的逻辑...

于 2012-09-21T15:20:25.117 回答
0

您可能希望将您的项目存储到一个数组中。

$result = mysql_query("SELECT * FROM system");
while($row = mysql_fetch_array( $result )) {
    $name_system[] = $row['name'];
    $value_system[] = $row['value'];

    if($row['name']=='website_register' AND $row['value']==1)
        {$register_system[] = 1;}
    else
        {$register_system[] = 0;}

    if($row['name']=='website_offline' AND $row['value']==1)
        {$offline_systemp[] = 1;}
    else
        {$offline_system[] = 0;}
}

这样,您可以通过执行以下操作打印出每个值:

for ($i = 0; $i < count($name_system); $i++) {
    echo 'Name system is: '.$name_system[$i];
}
于 2012-09-21T15:21:32.670 回答