问题:
我不断查看我的代码,无法找到数组复制数据的原因。输入数据库的单个输出具有正确的输出,但是如果有多个输入,则会在它之前和下一个输入之前复制它们。
我的代码:
global $connection;
//Query database & retrieve results.
$search = $connection->query('SELECT * FROM users WHERE country= "'.$country.'"');
echo '<table><tr><th>Username</th><th>Email</th><th>Country</th></tr>';
while ($result = $search->fetch_assoc())
{
$total[] = $result;
foreach ($total as $rows)
{
echo '<tr>';
echo '<td>'.stripslashes($rows['username']).'</td>';
echo '<td>'.stripslashes($rows['email']).'</td>';
echo '<td>'.stripslashes($rows['country']).'</td>';
echo '</tr>';
}
}
echo '</table>';
输出:
这将返回以下表格 -
Username Email Country
exampleUser1 exampleEmail1@example.com United States
exampleUser1 exampleEmail1@example.com United States
exampleUser2 exampleEmail2@example.com United States
您可以看到第一行重复,然后新条目就在那里,它将继续从此开始。
其他信息:
任何帮助都将不胜感激。
答案 0 :(得分:1)
<?php
//... Your code
while ($rows = $search->fetch_assoc()) {
$rows = array_map('stripslashes', $rows);
echo '<tr>';
echo '<td>'.$rows['username'].'</td>';
echo '<td>'.$rows['email'].'</td>';
echo '<td>'.$rows['country'].'</td>';
echo '</tr>';
}
//... Your code
如果您需要保存并从函数返回,则此行只创建数组$ total并在$total[] = $rows;
之后添加echo '</tr>';
答案 1 :(得分:0)
正如我在评论中提到的那样,将foreach放在你的while循环之外:
echo '<table><tr><th>Username</th><th>Email</th><th>Country</th></tr>';
while ($result = $search->fetch_assoc()) {
$total[] = $result;
}
foreach ($total as $rows) {
echo '<tr>';
echo '<td>'.stripslashes($rows['username']).'</td>';
echo '<td>'.stripslashes($rows['email']).'</td>';
echo '<td>'.stripslashes($rows['country']).'</td>';
echo '</tr>';
}
echo '</table>';
另一个解决方案就是一直重新声明您的$ total。只需保留您的代码然后执行:
$total = $result;