【问题标题】:Storing formatted text from tinymce in database将来自tinymce的格式化文本存储在数据库中
【发布时间】:2013-07-24 11:42:13
【问题描述】:

我有一个 tinymce 文本区域,在页面加载时我会在其中输入一些默认文本。此文本格式为粗体并带有下划线。所有这些都运作良好。但是,当我将此文本存储在 MySQL 数据库中时,出现以下错误:

将电子邮件添加到数据库时出错:您的 SQL 语法有误; 检查与您的 MySQL 服务器版本相对应的手册 在第 5 行使用 near ... 的正确语法

这是我在文本区域内创建此默认文本的方式;

window.onload = function formatText() {
    tinyMCE.get("results").setContent("<b><u>RESULTS</b></u><br><br><br>");
    tinyMCE.get("upcoming_races").setContent("<b><u>UPCOMING EVENTS</b></u><br><br><br>");
    tinyMCE.get("thisweek").setContent("<b><u>THIS WEEK'S TRAINING</b></u><br><br><br>");

}

当我取出这段代码并手动输入文本(以及使用 tinymce 按钮格式化文本)时,所有内容都完美地保存在数据库中。我不知道如何让这个文本既能以格式显示,又能通过 PHP/MySQL 调用保存。

有人知道怎么做吗?谢谢!

编辑:这是相关的 PHP 代码。请注意(如前所述),如果我手动键入文本并设置文本格式,则此代码可以正常工作。但是,当我使用 javascript 为我设置文本时,它会失败。

$sql = "INSERT INTO Emails
            (date, subject, greeting, results, upcoming, thisweek, signoff)
            VALUES 
            ('$today', '$subject', '$greeting', '$results', '$upcoming', 
            '$thisweek', '$signoff')";

$result = mysql_query($sql);

编辑 2:这是 $sql 文本的回声。对我来说看起来很奇怪的是所有的回车符,它们必须来自 javascript:

INSERT INTO 电子邮件(日期、主题、问候语、结果、即将到来、 thisweek, signoff) VALUES ('2013-07-23', 'test', 'test', 'RESULTS

', ' 即将举行的活动

', ' 这周的训练

', '测试签核')

【问题讨论】:

  • 您的错误不在您的JS代码中,请发布相关的php代码以便我们查看。
  • 好的,这将很难调试,但让我们从添加 echo $sql; 开始。就在您的 $result = 之前,带有一个给您此错误的字符串。用它更新您的帖子或将其放在评论中我的猜测是您没有正确地转义所有内容。
  • 我认为你是对的。也许它与javascript条目中的
    标签有关???
  • 我会使用 sql 并通过 phpMyAdmin 或连接到您的数据库的应用程序运行它来测试它我的猜测是“本周的培训”它是导致错误的 WEEK'S 中的 '。您应该查看 PDO php.net/manual/en/book.pdo.php 或转义您的输入。
  • 你完全正确。我没有想到这一点(并且最初没有发布)。当我从原始的 javascript 代码中去掉那个撇号时,一切正常。

标签: php javascript mysql tinymce


【解决方案1】:

我使用以下函数,因此您需要将 mysql 转换为 mysqli ...无论如何您都需要这样做,否则您的代码将不适用于即将发布的版本。链接以帮助http://php.net/manual/en/mysqli.query.php

还要注意它修改的这段代码,因为我在类中有它,所以它可能有点偏离......我不使用全局等。

function escapeString($string) {

    global $connection;

    // depreciated function
    if (version_compare(phpversion(),"4.3.0", "<")){
        return mysqli_escape_string($connection, $string);
    } else {
        return mysqli_real_escape_string($connection, $string);
    }

}


$sql = "INSERT INTO Emails
            (date, subject, greeting, results, upcoming, thisweek, signoff)
            VALUES 
            ('" . escapeString($today) . "', '" . escapeString($subject. "', '" . escapeString($greeting) . "', '" . escapeString($results) . "', '" . escapeString($upcoming) . "', 
            '" . escapeString($thisweek) . "', '" . escapeString($signoff) . "')";

【讨论】:

    猜你喜欢
    • 2015-04-25
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 2013-04-05
    • 2011-06-22
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多