【问题标题】:PHP not shown multiple rowsPHP未显示多行
【发布时间】:2016-07-09 10:01:25
【问题描述】:

我用这些来显示我的表格行:

它只显示一行,但我在 mysql 中有大约 300 行。

不知道有什么问题?谁能帮帮我?

我尝试使用此代码:

while($dnn = mysql_fetch_array($query, MYSQL_ASSOC)) {
$hour = $dnn['BanH']; $day = $dnn['BanD']; $month = $dnn['BanM']; $year = $dnn['BanY'];
$uhour = $dnn['UnbanH']; $uday = $dnn['UnbanD']; $umonth = $dnn['UnbanM']; $uyear = $dnn['UnbanY'];
$yaro = $dnn['Name']; $dalil = $dnn['Reason']; $bokon = $dnn['Admin'];

if($dnn['Days'] == 0) {
        $bantime = "Never <font color=red>(Banned Permanently)</font>";
}
else {
        $bantime = "$uday/$umonth/$uyear, $uhour:00";
}

$banlist = "<tr><td class=\"trow1\" align=\"center\"><a href=User-{$yaro}><font color=white>{$yaro}</a></font></td>
<td class=\"trow1\" align=\"center\">{$day}/{$month}/{$year}, {$hour}:00</td>
<td class=\"trow1\" align=\"center\">{$bantime}</td>
<td class=\"trow1\" align=\"center\">{$dalil}</td>
<td class=\"trow1\" align=\"center\">{$bokon}</td>
</tr>";
}
if($banlist == '')
{
        $banlist = '<tr><td colspan="5">'.$lang->no_banned.'</td></tr>';
}
$bans .= $banlist;

$page = "
<html>
<head>
<title>Banned Users List</title>
{$headerinclude}
</head>
<body>
{$header}
<br />
<table border=0 cellspacing={$theme['borderwidth']} cellpadding={$theme['tablespace']} class=tborder>
<tr>
<td class=thead colspan=5><span class=smalltext><strong>Banned Users List</strong></span></td>
</tr>
<tr>
<td class=tcat align=center>Player</td>
<td class=tcat align=center>Ban Date</td>
<td class=tcat align=center>Unban Date</td>
<td class=tcat align=center>Ban Reason</td>
<td class=tcat align=center>Banned By</td>
</tr>
{$bans}
</tbody></table>

{$footer}
</body>
</html>";
output_page($page);

我尝试使用http://php.net/manual/en/function.mysql-fetch-array.php 示例。 ** 抱歉我的英语不好。

【问题讨论】:

  • 在您的代码中使用 mysqli 而不是 mysql。
  • 你有什么错误吗??
  • 分享您的 SQL 查询。
  • @zahraj 我也用过 mysqli 但我没有收到任何错误。
  • @MuhammadSumonMollaSelim $query = mysql_query('SELECT * from bans order by uid desc');

标签: php row multiple-columns


【解决方案1】:

你做错了。在每次循环中,banlist 的值都会被覆盖 - 因此,您只能获得最后一行的值。

你需要这样做:

$banlist = '';
while($dnn = mysql_fetch_array($query, MYSQL_ASSOC)) {
$hour = $dnn['BanH']; $day = $dnn['BanD']; $month = $dnn['BanM']; $year = $dnn['BanY'];
$uhour = $dnn['UnbanH']; $uday = $dnn['UnbanD']; $umonth = $dnn['UnbanM']; $uyear = $dnn['UnbanY'];
$yaro = $dnn['Name']; $dalil = $dnn['Reason']; $bokon = $dnn['Admin'];

if($dnn['Days'] == 0) {
        $bantime = "Never <font color=red>(Banned Permanently)</font>";
}
else {
        $bantime = "$uday/$umonth/$uyear, $uhour:00";
}

$banlist .= "<tr><td class=\"trow1\" align=\"center\"><a href=User-{$yaro}><font color=white>{$yaro}</a></font></td>
<td class=\"trow1\" align=\"center\">{$day}/{$month}/{$year}, {$hour}:00</td>
<td class=\"trow1\" align=\"center\">{$bantime}</td>
<td class=\"trow1\" align=\"center\">{$dalil}</td>
<td class=\"trow1\" align=\"center\">{$bokon}</td>
</tr>";
}

【讨论】:

  • 循环结束后,var_dump($banlist) 返回什么?
  • string(303) "测试时间 7/7/2016, 14:00 17/7/2016, 14:00 测试测试员"
猜你喜欢
  • 2022-12-14
  • 2014-02-14
  • 1970-01-01
  • 2016-07-09
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 2016-07-25
  • 1970-01-01
相关资源
最近更新 更多