$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混合到它,一切都变得空白,整个网站。
答案 0 :(得分:0)
while ($row = mysql_fetch_assoc($sql_query) {
&#34; PHP解析错误:语法错误,意外&#39; {&#39;在
正如评论中所提到的,在开始大括号(波浪形支架)之前,您在while条件下缺少右括号(圆括号)。这应该是:
while ($row = mysql_fetch_assoc($sql_query)) {
但是,在while循环结束时,您确实有另一个明显的解析错误。以下是无效语法:
if ($i == "7") { end while; }
这应该是:
if ($i == "7") { break; }
&#34;将PHP和HTML混合在一起&#34; - 只是不要混用PHP和HTML ......它很难阅读/维护。
无论使用何种语法(传统或替代(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
块之间似乎有所不同的唯一位是样式属性的float: left
/ float: right
部分。所以这些可以结合起来。$i
是一个整数,但您将其与if
条件中的字符串进行比较。这有效,但不是&#34;正确&#34;。else { break; }
似乎会做同样的事情?