在数组中显示 PHP/MySQL 查询的循环
Display loop over PHP/MySQL query in array
我正在学习 PHP
以便将一些模块开发到我的软件中 Dolibarr
我想知道如何遍历查询结果并显示数组中的每一行。
这是我的脚本:
/*
* View
*/
$query = "SELECT u.lastname as nom, u.firstname as prenom, u.datelastlogin as lastlogin";
$query.= " FROM ".MAIN_DB_PREFIX."user as u";
$query.= " ORDER BY lastlogin DESC LIMIT 2";
$resql = $db ->query($query);
$num = $db->fetch_row($resql);
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Affichage des 2 dernières connexions").'</th></tr>';
if (! empty($conf->user->enabled))
{
$LastLogin = '<tr class="oddeven">';
$LastLogin.= '<td><a href="index.php">'.$langs->trans("Utilisateur").'</a></td><td align="right">'.$num[0]." ".$num[1]." ".$num[2].'</td>';
$LastLogin.= "</tr>";
}
print $LastLogin;
print '</table>';
到目前为止,我 return 只查询了第一行。我以前从未在 PHP 中编程过,我想知道如何将查询中的每一行显示到我的数组中?
我必须将 fetch_row
更改为 fetch_array
?
或者,也许更好,将我的数组分成 3 列(列名、列名字、列 datelastlogin)
像这样:
我真的不明白我该怎么做。
感谢您的帮助
编辑:
我编辑了脚本:
$query = "SELECT u.lastname as nom, u.firstname as prenom, u.datelastlogin as lastlogin";
$query.= " FROM ".MAIN_DB_PREFIX."user as u";
$query.= " ORDER BY lastlogin DESC LIMIT 2";
$resql = $db ->query($query);
//$num = $db->fetch_array($resql);
while($num = $resql->fetch_assoc())
{
$nums[] = $num;
}
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Dernières connexions").'</th></tr>';
if (! empty($conf->user->enabled))
{
foreach($nums as $num)
{
$LastLogin = '<tr class="oddeven">';
$LastLogin.= '<td><a href="index.php">'.$num['nom'].'</a></td><td>'.$num['prenom'].'</td><td>'.$num['lastlogin'].'</td>';
$LastLogin.= "</tr>";
}
}
print $LastLogin;
print '</table>';
但是数组显示的不好:
你好:)
首先我不得不说你的错误与你是新手无关 PHP - 但我认为你缺少编程的一些基础知识,因为 phyton 工作这种情况的方法相同。
让我们看看您的代码:
if (! empty($conf->user->enabled))
{
foreach($nums as $num)
{
$LastLogin = '<tr class="oddeven">';
$LastLogin.= '<td><a href="index.php">'.$num['nom'].'</a></td><td>'.$num['prenom'].'</td><td>'.$num['lastlogin'].'</td>';
$LastLogin.= "</tr>";
}
}
print $LastLogin;
这里的问题是你总是覆盖 $LastLogin
。这在植物中的工作方式相同。所以你实际上有两个选择:
- 将打印放在 forloop 中。
- 在循环内直接输出结果。
我不会为 1
做一个例子,因为它只将 print $LastLogin
放在 foreach 循环中——你不需要一个例子。
下面我将向您展示的是我将如何编写您的代码:
$query = "SELECT u.lastname as nom, u.firstname as prenom, u.datelastlogin as lastlogin";
$query.= " FROM ".MAIN_DB_PREFIX."user as u";
$query.= " ORDER BY lastlogin DESC LIMIT 2";
$resql = $db ->query($query);
//$num = $db->fetch_array($resql);
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Dernières connexions").'</th></tr>';
if (! empty($conf->user->enabled)) {
while($num = $resql->fetch_assoc()) {
print '<tr class="oddeven">';
print '<td><a href="index.php">'.$num['nom'].'</a></td><td>'.$num['prenom'].'</td><td>'.$num['lastlogin'].'</td>';
print '</tr>';
}
}
print '</table>';
实际上没有必要将所有结果保存到一个 var 中并一直附加到它。只需直接打印结果,没有任何阻碍。当然,我们现在可以讨论分离逻辑和视图——但在这种情况下,实际上并不需要它。
希望对您有所帮助:)
我正在学习 PHP
以便将一些模块开发到我的软件中 Dolibarr
我想知道如何遍历查询结果并显示数组中的每一行。
这是我的脚本:
/*
* View
*/
$query = "SELECT u.lastname as nom, u.firstname as prenom, u.datelastlogin as lastlogin";
$query.= " FROM ".MAIN_DB_PREFIX."user as u";
$query.= " ORDER BY lastlogin DESC LIMIT 2";
$resql = $db ->query($query);
$num = $db->fetch_row($resql);
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Affichage des 2 dernières connexions").'</th></tr>';
if (! empty($conf->user->enabled))
{
$LastLogin = '<tr class="oddeven">';
$LastLogin.= '<td><a href="index.php">'.$langs->trans("Utilisateur").'</a></td><td align="right">'.$num[0]." ".$num[1]." ".$num[2].'</td>';
$LastLogin.= "</tr>";
}
print $LastLogin;
print '</table>';
到目前为止,我 return 只查询了第一行。我以前从未在 PHP 中编程过,我想知道如何将查询中的每一行显示到我的数组中?
我必须将 fetch_row
更改为 fetch_array
?
或者,也许更好,将我的数组分成 3 列(列名、列名字、列 datelastlogin)
像这样:
我真的不明白我该怎么做。
感谢您的帮助
编辑:
我编辑了脚本:
$query = "SELECT u.lastname as nom, u.firstname as prenom, u.datelastlogin as lastlogin";
$query.= " FROM ".MAIN_DB_PREFIX."user as u";
$query.= " ORDER BY lastlogin DESC LIMIT 2";
$resql = $db ->query($query);
//$num = $db->fetch_array($resql);
while($num = $resql->fetch_assoc())
{
$nums[] = $num;
}
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Dernières connexions").'</th></tr>';
if (! empty($conf->user->enabled))
{
foreach($nums as $num)
{
$LastLogin = '<tr class="oddeven">';
$LastLogin.= '<td><a href="index.php">'.$num['nom'].'</a></td><td>'.$num['prenom'].'</td><td>'.$num['lastlogin'].'</td>';
$LastLogin.= "</tr>";
}
}
print $LastLogin;
print '</table>';
但是数组显示的不好:
你好:)
首先我不得不说你的错误与你是新手无关 PHP - 但我认为你缺少编程的一些基础知识,因为 phyton 工作这种情况的方法相同。
让我们看看您的代码:
if (! empty($conf->user->enabled))
{
foreach($nums as $num)
{
$LastLogin = '<tr class="oddeven">';
$LastLogin.= '<td><a href="index.php">'.$num['nom'].'</a></td><td>'.$num['prenom'].'</td><td>'.$num['lastlogin'].'</td>';
$LastLogin.= "</tr>";
}
}
print $LastLogin;
这里的问题是你总是覆盖 $LastLogin
。这在植物中的工作方式相同。所以你实际上有两个选择:
- 将打印放在 forloop 中。
- 在循环内直接输出结果。
我不会为 1
做一个例子,因为它只将 print $LastLogin
放在 foreach 循环中——你不需要一个例子。
下面我将向您展示的是我将如何编写您的代码:
$query = "SELECT u.lastname as nom, u.firstname as prenom, u.datelastlogin as lastlogin";
$query.= " FROM ".MAIN_DB_PREFIX."user as u";
$query.= " ORDER BY lastlogin DESC LIMIT 2";
$resql = $db ->query($query);
//$num = $db->fetch_array($resql);
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Dernières connexions").'</th></tr>';
if (! empty($conf->user->enabled)) {
while($num = $resql->fetch_assoc()) {
print '<tr class="oddeven">';
print '<td><a href="index.php">'.$num['nom'].'</a></td><td>'.$num['prenom'].'</td><td>'.$num['lastlogin'].'</td>';
print '</tr>';
}
}
print '</table>';
实际上没有必要将所有结果保存到一个 var 中并一直附加到它。只需直接打印结果,没有任何阻碍。当然,我们现在可以讨论分离逻辑和视图——但在这种情况下,实际上并不需要它。
希望对您有所帮助:)