PHP / MYSQL while循环仅显示最后一条记录

时间:2012-09-21 15:15:29

标签: php

我有这段代码:

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

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

6 个答案:

答案 0 :(得分:1)

  

我的问题是,循环只显示

中的最后一条记录

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

移动执行echoprint 循环的代码,它将起作用。

答案 1 :(得分: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 />";
}

答案 2 :(得分:0)

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

$register_system = 1;

待办事项

$register_system[] = 1;

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

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

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

答案 3 :(得分:0)

echo/print需要在循环中。

答案 4 :(得分:0)

尽量在任何需要的地方使用休息......

使用flag变量的逻辑...

答案 5 :(得分: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];
}