
本文详解如何将包含 HTML 的 PHP 输出逻辑(如数据库查询与循环渲染)正确嵌入到 if ($req === 'something') 等条件分支中,避免因混用 PHP 开关标签导致的“unexpected end of file”语法错误。
本文详解如何将包含 html 的 php 输出逻辑(如数据库查询与循环渲染)正确嵌入到 `if ($req === 'something')` 等条件分支中,避免因混用 php 开关标签导致的“unexpected end of file”语法错误。
在 PHP 中混合 HTML 与逻辑代码时,核心原则是:PHP 标签必须严格配对、嵌套合法,且不能在条件块内意外中断 PHP 解析上下文。你遇到的 unexpected end of file 错误,根本原因在于将原本独立运行的 PHP/HTML 混合片段直接复制进 if 语句后,未统一 PHP 开关标签()的起止位置,导致解析器在 if 块中途丢失 PHP 上下文,最终无法闭合。
✅ 正确做法:将整个 HTML 渲染逻辑封装在单一、连续的 PHP 作用域内,用 echo 或短标签 = ?> 输出 HTML,或确保 标签完整嵌套在 if 内部——绝不允许 。
以下是重构后的推荐写法(已整合 $req 判断,并修复所有语法风险):
<?php include '../koneksi.php';
$req = $_REQUEST['req'] ?? '';
$keyword = $_POST['searchpakaian'] ?? '';
// 仅当 $req 匹配指定值时执行查询与渲染
if ($req === 'something') {
// ✅ 安全拼接 SQL(注意:生产环境务必使用预处理防止注入!)
$escaped_keyword = mysqli_real_escape_string($conn, $keyword);
$query = mysqli_query($conn, "SELECT * FROM tbl_pakaian
WHERE nama_pakaian LIKE '%{$escaped_keyword}%'
ORDER BY id ASC LIMIT 6");
if (!$query) {
die('Query failed: ' . mysqli_error($conn));
}
$hitung_data = mysqli_num_rows($query);
if ($hitung_data > 0) {
// ✅ 使用 echo 输出 HTML(推荐:逻辑清晰、无标签嵌套冲突)
while ($row = mysqli_fetch_array($query)) {
echo '<div class="col">
<div class="card h-100">
<div class="card-img-wrap">
@@##@@
</div>
<div class="card-body">
<h5 class="card-title">' . htmlspecialchars($row['nama_pakaian']) . '</h5>
<p class="card-text">' . htmlspecialchars($row['keterangan_pakaian']) . '</p>
</div>
</div>
</div>';
}
} else {
echo '<div class="text-center"><h4>Tidak Ada Data</h4></div>';
}
}
// ⚠️ 注意:此处无 else 分支 —— 若 $req 不匹配,则不输出任何内容
?>
? 关键注意事项:
- 禁止跨标签断开 PHP 块:不要写 if(...) { ?> ... 导致解析失败;
- 优先使用 echo 输出 HTML:比混用 标签更可控,尤其在条件嵌套中;
- 必须转义输出内容:使用 htmlspecialchars() 防止 XSS(如示例中对 nama_pakaian 和 gambar_pakaian 的处理);
- SQL 注入防护:示例中使用 mysqli_real_escape_string() 是基础防护,强烈建议升级为预处理语句(PDO 或 MySQLi prepared statements);
- 短标签 = ?> 仅适用于 echo 场景,且需确认服务器启用了 short_open_tag(非默认推荐,echo 更兼容)。
总结:PHP 与 HTML 的混合不是“把 HTML 粘贴进去”,而是“在 PHP 逻辑中安全生成 HTML”。始终让 PHP 代码块保持语法完整、上下文连续,就能彻底规避 unexpected end of file 类错误。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











