如何在数据库存储带if条件的HTML代码并避免if/else在前端显示
问题原因
你当前的写法是将PHP的if/else判断逻辑直接作为普通文本拼接进了要存入数据库的HTML字符串中,PHP并不会执行写在字符串内部的逻辑代码,因此最终存入数据库的内容直接包含了if/else的明文,前端渲染时自然会将这部分内容当成普通文本展示。
正确实现方式
你需要先在字符串外部完成PHP逻辑判断,将判断后得到的对应HTML片段拼接进最终要存入数据库的内容中,示例代码如下:
// 先判断rating的值,生成对应的Review按钮HTML $reviewBtn = $rating == 0 ? "<a href='/showTransaction/".$buy_id."' class='btn btn-primary' >Review ?</a>" : "<a href='' class='btn btn-primary' disabled >Review ?</a>"; // 再拼接完整的通知内容 $user_notification->notification = "Delivery date <b>".$date."</b> and delivery time <b> ".$time." </b> for the truck ".$truck_name." of mileage ".$mileage_name." of quantity ".$qty." has confirmed <br> <a href='#' class='btn btn-primary' >Pay ?</a> ".$reviewBtn; $user_notification->save();
额外注意事项
- 若后续
$rating的值可能发生变更,不建议把按钮状态写死成HTML存入数据库,否则rating更新后已存储的通知里的按钮状态不会同步更新。更合理的方案是只存动态数据(日期、时间、车辆信息、buy_id、rating值等),前端渲染时再根据rating的实时值动态生成按钮。 - 直接将HTML片段存入数据库并在前端输出时,请注意做好XSS攻击防护,对所有用户可控的变量做好转义处理。
内容的提问来源于stack exchange,提问作者CodeHunt
相关产品推荐
相关产品推荐

