[英]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
以进行打印时,该显示仅执行一次。
在循环内移动执行echo
或print
或任何内容的代码,它将起作用。
这很草率,但是会向您展示循环过程中发生的情况:
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.