我有一个从MySQL查询中填充的数组:
if ($result) {
$foundResult = true;
foreach ($result as $row) {
array_push($searchResultAccount,$row->Account);
array_push($searchResultUsername,$row->Username);
array_push($searchResultPassword,$row->Password);
array_push($searchResultCreated,$row->Created);
array_push($searchResultStrength,$row->Strength);
}
} else {
array_push($error,"No results found");
}
在我的页面中,我想创建一个表,并使用数组中的结果填充引导表。但是,表中的每个单元格都会打印该给定字段的所有结果集。我怀疑我的循环逻辑有问题。我尝试从foreach改为for循环,但仍然没有运气:
<tbody>
<?php for ($x = 0; $x < sizeof($result); $x++) { ?>
<tr>
<td><?php for ($i = 0; $i < sizeof($searchResultAccount); $i++){echo($searchResultAccount[$i]);}?></td>
<td><?php for ($i = 0; $i < sizeof($searchResultUsername); $i++){echo($searchResultUsername[$i]);}?></td>
<td><?php for ($i = 0; $i < sizeof($searchResultPassword); $i++){echo($searchResultPassword[$i]);}?></td>
<td><?php for ($i = 0; $i < sizeof($searchResultCreated); $i++){echo($searchResultCreated[$i]);}?></td>
<td><p>ExpiresHere</p></td>
<td><?php for ($i = 0; $i < sizeof($searchResultStrength); $i++){echo($searchResultStrength[$i]);}?></td>
</tr>
<?php } ?>
</tbody>
结果如下所示:
我在阵列中有2个结果,正如您所看到的,它们在每个单元格中一起打印。关于我哪里出错的任何想法?
编辑:完整的PHP代码,如下面的查询字符串:
$sql = "SELECT * FROM Accounts WHERE User_ID = :userid AND Account = :account";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':userid',$userid);
$stmt->bindValue(':account',$account);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_CLASS);
if($result) {
$foundResult = true;
foreach($result as $row) {
array_push($searchResultAccount,$row->Account);
array_push($searchResultUsername,$row->Username);
array_push($searchResultPassword,$row->Password);
array_push($searchResultCreated,$row->Created);
array_push($searchResultStrength,$row->Strength);
}
} else {
array_push($error,"No results found");
}
答案 0 :(得分:2)
像这样工作:
steps == 0.5
使用此方法可以为每个结果行创建表行
答案 1 :(得分:1)
您必须删除td元素内的for循环
foreach($result as $row) {
<tr>
<td><?php echo $row->Account;?></td>
<td><?php echo $row->Username;?></td>
<td><?php echo $row->Password;?></td>
<td><?php echo $row->Created;?></td>
<td><?php echo $row->Strength;?></td>
</tr>
}
答案 2 :(得分:1)
问题出现的原因是这样的行。
for($i = 0; $i < sizeof($searchResultAccount); $i++){echo($searchResultAccount[$i]);}
我猜测&#34;发生问题的原因是这是您要打印的行的长度,而不是您希望在表格上打印的数据的数量。
尝试更改以下行:
<?php for($i = 0; $i < sizeof($searchResultAccount); $i++){echo($searchResultAccount[$i]);}?>
到
<td><?php echo($searchResultAccount[$x]) ; } ?></td>
答案 3 :(得分:0)
现在,您正在循环每个tablerow(tr)中的每个结果。使用此代码,您只关注属于tr。
的结果<tbody>
<?php for($x = 0; $x < sizeof($result); $x++) { ?>
<tr>
<td><?php echo($searchResultAccount[$x]);?></td>
<td><?php echo($searchResultUsername[$x]);?></td>
<td><?php echo($searchResultPassword[$x]);?></td>
<td><?php echo($searchResultCreated[$x]);?></td>
<td><p>ExpiresHere</p></td>
<td><?php echo($searchResultStrength[$x]);?></td>
</tr>
<?php } ?>
</tbody>