首页 > 解决方案 > 使用 PHP 从 SQL 中打印 HTML 和 PHP 代码

问题描述

我将包含 PHP 代码的 HTML 代码存储在我的数据库中,我想将它输出到我的网站上。PHP 代码将被注释掉。

SQL存储代码:

Hallo und ein herzliches Willkommen auf der Homepage von <?php echo($p_name); ?>. <br>

Euer <?php echo($p_name); ?>.

PHP SQL 打印机:

$query = "SELECT * FROM `news`";
$result = mysqli_query($db, $query);
$row = mysqli_fetch_array($result);
if (!empty($row)) {
echo(utf8_encode($row['content']));
}

表结构:

CREATE TABLE `news` (
  `entryid` int(11) NOT NULL,
  `content` varchar(8000) CHARACTER SET latin1 COLLATE latin1_german2_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `news`
  ADD PRIMARY KEY (`entryid`);

ALTER TABLE `news`
  MODIFY `entryid` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
COMMIT;

---结果:---

Hallo und ein herzliches Willkommen auf der Homepage von <!--?php echo($p_name); ?-->. <br>
Euer <!--?php echo($p_name); ?-->.

标签: phphtmlsql

解决方案


我将包含 PHP 代码的 HTML 代码存储在我的数据库中,我想将它输出到我的网站上。

答案很简单:

不要那样做。曾经。

一般来说,在数据库中存储这样的动态 HTML 并不是一个好主意,但如果你只有一个带有几个占位符的常规 HTML 来输出一些数据,那么放一些占位符,而不是 PHP 代码:

Hallo und ein herzliches Willkommen auf der Homepage von %p_name%

然后只需使用str_replace()

echo str_replace("%p_name%", $p_name, $row['content']));

如果您想存储带有循环、条件等的全功能 HTML 模板,可以使用,但仍不推荐。使用像 Twig 这样的专用模板引擎并将模板存储在文件系统中,而不是数据库中


推荐阅读