Php 如何阻止数据库数据破坏HTML页面?

Php 如何阻止数据库数据破坏HTML页面?,php,mysql,Php,Mysql,我知道,当从表单获取数据并将其放入MySQL数据库时,应该使用MySQL_real_escape_string()对数据进行转义,以防止SQL注入。我的问题有点不同 我从MySQL数据库中提取数据,然后将其显示在页面上,但我遇到了一个问题。假设我的数据如下所示: This is some test data, and here's a quote. For good measure, here are "some more" quotes. echo '<input type="text

我知道,当从表单获取数据并将其放入MySQL数据库时,应该使用MySQL_real_escape_string()对数据进行转义,以防止SQL注入。我的问题有点不同

我从MySQL数据库中提取数据,然后将其显示在页面上,但我遇到了一个问题。假设我的数据如下所示:

This is some test data, and here's a quote. For good measure, here are "some more" quotes.
echo '<input type="text" value="' . $data . '">';
现在,我的php代码如下所示:

This is some test data, and here's a quote. For good measure, here are "some more" quotes.
echo '<input type="text" value="' . $data . '">';
echo';
这会导致HTML页面被破坏,因为数据中有引号,并且显示在一个输入标记中,该标记包含带引号的数据

看到问题了吗


什么是最好的解决方案?

就像
mysql\u real\u escape\u string()
是用于SQL操作的,在HTML方面,它是。

您需要为HTML实体转义数据:


echo'

您可以尝试以下操作:

echo'

最好将php代码与html分开


改用参数:D,这样就不会重新发明轮子:请看这篇最优秀的前so文章@xQbert——您能详细说明一下吗?请看第一条评论中添加的链接;但Marc B(很可能准备好了)在这个具体的例子中击中了要害。