$i = 0;
$sql_query = mysql_query("SELECT * FROM designs WHERE accessibility=`2` ORDER BY id DESC LIMIT 5");
while ($row = mysql_fetch_assoc($sql_query) {
if ($i == "0") { ?><div style="width: 49%; float: left;"><a href="designs.php?id=<?php echo $row["id"]; ?>"><img id="lookup_designs_item_icon" src="img/designs/<?php echo $row["id"]; ?>.jpg" alt="<?php echo $row["resolution"]; ?> | <?php echo $row["artist"]; ?>"/></a></div>
<?php } elseif ($i == "1") { ?><div style="width: 49%; float: right;"><a href="designs.php?id=<?php echo $row["id"]; ?>"><img id="lookup_designs_item_icon" src="img/designs/<?php echo $row["id"]; ?>.jpg" alt="<?php echo $row["resolution"]; ?> | <?php echo $row["artist"]; ?>"/></a></div>
<?php } $i++; if ($i == "7") { end while; }
}
为什么这段代码不起作用?如果我在没有数据库的情况下手动进行。您知道,只要认为您是 PHP 并用 HTML 和 CSS 创建代码,它就可以工作。但是一旦您将 PHP 混入其中,整个网站就会一片空白。
最佳答案
while ($row = mysql_fetch_assoc($sql_query) {
"PHP Parse error: syntax error, unexpected '{' in
如评论中所述,您在 while 条件中缺少右括号(圆括号),在左括号(波浪括号)之前。这应该是:
while ($row = mysql_fetch_assoc($sql_query)) {
但是,您在 while 循环结束时确实有另一个明显的解析错误。以下是无效语法:
if ($i == "7") { end while; }
这应该是:
if ($i == "7") { break; }
"mix PHP and HTML like that" - just don't mix PHP and HTML like that... it's hard to read/maintain.
无论使用何种语法(传统的或替代的(Tero Kilkanen 建议的)- 旨在使此类代码更易于阅读),您根本不应该像这样混合使用 PHP 和输出, 通过退出/加入 PHP 解析模式。
如果您需要构建一些 HTML 稍后输出,那么构建一个字符串并在循环结束时 echo
一次。
所以,而不是这个:
$i = 0;
$sql_query = mysql_query("SELECT * FROM designs WHERE accessibility=`2` ORDER BY id DESC LIMIT 5");
while ($row = mysql_fetch_assoc($sql_query) {
if ($i == "0") { ?><div style="width: 49%; float: left;"><a href="designs.php?id=<?php echo $row["id"]; ?>"><img id="lookup_designs_item_icon" src="img/designs/<?php echo $row["id"]; ?>.jpg" alt="<?php echo $row["resolution"]; ?> | <?php echo $row["artist"]; ?>"/></a></div>
<?php } elseif ($i == "1") { ?><div style="width: 49%; float: right;"><a href="designs.php?id=<?php echo $row["id"]; ?>"><img id="lookup_designs_item_icon" src="img/designs/<?php echo $row["id"]; ?>.jpg" alt="<?php echo $row["resolution"]; ?> | <?php echo $row["artist"]; ?>"/></a></div>
<?php } $i++; if ($i == "7") { end while; }
}
做这样的事情:
// HTML to be output
$htm = '';
$i = 0;
$sql_query = mysql_query("SELECT * FROM designs WHERE accessibility=`2` ORDER BY id DESC LIMIT 5");
while ($row = mysql_fetch_assoc($sql_query)) {
if ($i == "0") {
$htm .= <<<EOD
<div style="width: 49%; float: left;">
<a href="designs.php?id={$row["id"]}"><img id="lookup_designs_item_icon" src="img/designs/{$row["id"]}.jpg" alt="{$row["resolution"]} | {$row["artist"];}"/></a>
</div>
EOD;
}
elseif ($i == "1") {
$htm .= <<<EOD
<div style="width: 49%; float: right;">
<a href="designs.php?id={$row["id"]}"><img id="lookup_designs_item_icon" src="img/designs/{$row["id"]}.jpg" alt="{$row["resolution"];} | {$row["artist"];}"/></a>
</div>
EOD;
}
$i++;
if ($i == "7") {
break;
}
}
// Output HTML
echo $htm;
代码现在更容易一目了然,而且很快就会发现可以进行进一步的优化。例如……
if
block 之间似乎唯一不同的是样式属性的float: left
/float: right
部分。所以这些可以结合起来。$i
是一个整数,但您正在将它与if
条件中的字符串进行比较。这有效,但不是“正确的”。- 当 $i 为 2、3、4、5 或 6 时,您似乎没有在循环中执行任何操作?所以你应该早点休息。 IE。简单地
else { break;
似乎做同样的事情?
关于php - while循环导致网站消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25700710/