繁体   English   中英

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

[英]PHP/MYSQL while loop only displays the last record

我有以下代码:

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

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

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

不,问题在于循环什么也不显示。 显示随后发生,在循环之外的代码中,因此,当光标浏览了整个表并且只有最后一行保留在$row以进行打印时,该显示仅执行一次。

在循环移动执行echoprint或任何内容的代码,它将起作用。

这很草率,但是会向您展示循环过程中发生的情况:

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

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

$register_system = 1;

$register_system[] = 1;

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

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

当然,这些是不同的价值。

echo/print需要在循环内。

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

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

您可能需要将项目存储到数组中。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM