任何人都可以提供帮助 - 这让我很生气。
我正在调用一个mysql表,希望不止一次显示结果(或用if语句检查结果)。但是在这个循环中(见下文)它只在第一个实例中调用表及其行作为数组($ i = 1)。这段代码将构建20个名为Box的div,但只用表数据填充第一个div。为什么呢?
我认为我应该在外部循环中使用foreach循环(我已经使用btw在wordPress中使用它)但无法弄清楚语法。任何帮助都会非常感激。
$i=1;
while ($i <= 20)
{
echo "<div class=\"Box ".$i."\">";
echo $i;
echo "<br>";
while ($row = mysql_fetch_array($result))
{
echo $row['name'];
}
echo "</div>";
$i++;
}
答案 0 :(得分:1)
如果我理解,您试图在循环中多次使用相同的结果资源。
第一次循环结果资源后,您需要将其回退到原始位置,以便能够再次循环它。它可以用mysql_data_seek($result, 0)
重绕,但更好的策略是在循环之前将整个事物加载到数组中,然后在每个循环中迭代数组:
// Load everything into the array `$results` first.
$results = array();
while ($row = mysql_fetch_assoc($result)) {
$results[] = $row['name'];
}
// Better an incremental for loop than a while with a counter
// for a situation where you know the endpoint values of $i
for ($i = 1; $i <= 20; $i++)
{
echo "<div class='Box $i'>";
echo $i;
echo "<br>";
// Inside your HTML, use the $results array
// rather than the MySQL resource
foreach ($results as $row)
{
echo $row['name'];
}
echo "</div>";
}
答案 1 :(得分:1)
也许我不太懂,但你应该试试这个:
$i=1;
while ($row = mysql_fetch_array($result) && $i <= 20) {
echo "<div class=\"Box ".$i."\">";
echo $i;
echo "<br>";
echo $row['name'];
echo "</div>";
$i++;
}
因为在你的代码中,你在第一个循环中执行了“mysql循环”。
答案 2 :(得分:0)
尝试这样做,
$i=1;
while ($row = mysql_fetch_array($result))
{
echo "<div class=\"Box ".$i."\">";
echo $i;
echo "<br>";
echo $row['name'];
echo "</div>";
$i++;
}
答案 3 :(得分:0)
一旦给出mysql_fetch_array($ result),$ result不能再用于获取。所以它不会在循环中工作。更好地将结果存储在数组中,并在需要的地方使用它。
答案 4 :(得分:0)
你可以使用mysql_data_seek重置为结果的指针,如果你想再次通过它们,请执行:
mysql_data_seek ( $result, 0 );