【发布时间】:2015-05-29 11:24:12
【问题描述】:
假设您有一个 mysql 表 FLAGS 具有随机数量的行
ID Language Flag1 Flag2 Flag3 Flag4
1 dutch flanders_flag.png dutch_flag.png
2 french wallonia_flag.png french_flag.png morocco_flag.png
3 english england_flag.png ireland_flag.png america_flag.png scotland_flag.png
如果我想查询这些行并将它们放入我的 html 中,我会使用 while 循环,因为我永远不知道这个表 FLAGS 有多少行。
<?php
$flagquery = $db->prepare ("SELECT * FROM flags");
$flagquery->execute();
while ($flagrow = $flagquery->fetch(PDO::FETCH_ASSOC)) {
?>
<div class="col-md-1 col-sm-2 col-xs-6">
<p><?php echo $flagrow['language']; ?></p>
<p><?php echo $flagrow['flag1']; ?></p>
<p><?php echo $flagrow['flag2']; ?></p>
<p><?php echo $flagrow['flag3']; ?></p>
<p><?php echo $flagrow['flag4']; ?></p>
</div>
<?php
}
?>
但正如您在 FLAGS 表中看到的那样,您并不总是有 4 个标志一种语言,所以我认为您必须在前一个 while 循环中执行一个 while 循环以仅回显标志FLAGS 表中存在的标志,而不是仅仅回显所有标志,即使它们是空的。
我的想法对吗?或者什么是处理我的情况的最佳方法?
【问题讨论】:
-
使用 isset($flagrow['flag1'])
-
我有这个想法,谢谢你的同样想法。但是是否有更短的方法可以查看数组键是否已设置?
-
isset() 是一种捷径.. 我不知道是否有更短的方法:)
-
还有 !empty() 更好......如果变量是空字符串,它会返回 true,false,array(),NULL,“0?,0,和未设置的变量。
-
刚刚对其进行了测试,它不适用于 isset(),只能使用 !empty 或与空字符串进行比较!如果你查询一个列,即使它是空的,它也总是会被设置。
标签: php while-loop