【问题标题】:Storing html code in the sql database problem在sql数据库中存储html代码问题
【发布时间】:2011-04-26 12:26:21
【问题描述】:

我想将 HTML 代码存储在 SQL 数据库中。它可以很好地存储所有内容,除非定义了诸如border="0"之类的属性。 我认为单引号不是问题。我该如何避免这种情况发生。

错误:错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 '0"> 附近使用的正确语法

【问题讨论】:

    标签: php sql mysql html


    【解决方案1】:

    您是否在尝试将 HTML 插入数据库之前对其进行转义?假设您的 HTML 存储在变量 $html

    $html = mysql_real_escape_string($html);
    $sql = "INSERT INTO html_docs (html) VALUES('$html')";
    mysql_query($sql);
    

    【讨论】:

      【解决方案2】:

      您需要转义您的字符串,看起来mysql_real_escape_string 将在 PHP 中完成这项工作。

      【讨论】:

        【解决方案3】:

        通常的建议是不要连接参数和代码来构建 SQL;使用静态 SQL 并将数据作为参数传递。所有体面的 SQL API 都有参数绑定机制。

        但是,AFAICT,PHP 数据库 API 中没有这种机制。相反,您似乎应该在将字符串注入 SQL 语句之前使用 mysql_real_escape_string 转义字符串。请有人告诉我,我错了,PHP 的作者没那么傻。

        【讨论】:

        • 有一种叫做 PDO 的东西可以做到这一点。 AFAIK 默认情况下它不在 PHP 中。
        • 那么当我想再次打印为普通 HTML 时,我应该使用什么。我的意思是有时数据显示为
        • 这绝不应该发生。但是,如果没有看到一些相关的 sn-ps 代码,就很难提供任何建议。
        • @Zack - 转义的字符串不存储在转义的数据库中。当您查询数据库时,您将得到未转义的字符串。这可能对你有帮助php.net/manual/en/security.magicquotes.disabling.php
        猜你喜欢
        • 1970-01-01
        • 2013-08-27
        • 1970-01-01
        • 1970-01-01
        • 2017-08-17
        • 1970-01-01
        • 1970-01-01
        • 2017-01-27
        • 2013-10-04
        相关资源
        最近更新 更多