在我的项目中,我使用两个for循环打印固定的10 * 10表。我的数据库有两个row_id
和column_id
字段。我想检查数据库给定的行id和列id是否与表行号相同,列号打印一些字符串。但是在下面的代码中只检查第一个数据库值。下面的代码有什么问题?
print('<table border="1" cellspacing="0" cellpadding="2">');
for($x=1; $x<=10; $x++)
{
echo "<tr>";
for($y=1; $y<=10; $y++)
{
echo "<td>";
while($row = mysqli_fetch_array($result)){
if($row['row_id'] == $x && $row['column_id'] == $y)
print($row['img_title']);
else echo"no img";
}
echo $x . $y;
echo "</td>";
}
echo "</tr>";
}
print('</table>');
答案 0 :(得分:2)
while($row = mysqli_fetch_array($result)) {
// ....
}
因为此代码将获取所有行一次(在您的情况下,您的第一列和第一行),并且您不能在其他列和行重用它。您可以获取所有行并存储在临时数组中。
例如
while($row = mysqli_fetch_array($result)) {
$temp[$row['row_id']][$row['column_id']] = true;
}
然后在你的嵌套循环中:
for($x = 1; $x <= 10; $x++) {
for($y = 1; $y <= 10; $y++) {
if (isset($temp[$x][$y])) {
print("got");
}
}
}