无法在MySQL UPDATE语句中转义分号

时间:2015-08-04 18:15:17

标签: mysql sql-insert

我目前遇到的问题是我正在使用的 MySQL UPDATE 语句。出于某种原因,我无法在声明中摆脱分号。

如果我从声明中删除所有的分号,它可以正常工作,所以我知道它与逃避分号有关。

我已经尝试过使用\前导它们的标准方法来逃避它们,但这没有任何作用。

我还尝试切换/交换双引号的所有单引号,以及单引号的双引号,以反转它们的顺序,这也没有做任何事情。

以下是我要执行的声明:

UPDATE email_campaign_template 
                SET content='<style>
/* General */
body {
    font-family: "Open Sans", sans-serif;
    color: #fdfcfc;
}
.container {
    max-width: 660px;
}
* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
</style>
'
                WHERE label='Property Flyer 01' 
                AND email_campaign_id = '10';

这会生成以下错误,该错误指的是语句中的第一个分号:

  

[Err] 1064 - 您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以获得正确的语法   在''&lt; style&gt;附近使用/ * General * / body {font-family:“Open Sans”,   sans-serif'在第2行

如何成功逃脱分号以便能够执行此RAW MySQL语句?

3 个答案:

答案 0 :(得分:2)

每当要在分号中添加分号时,请使用CHAR(59)。

答案 1 :(得分:-1)

您可以使用mysqli_real_escape_string()

清理查询

请参阅文档以了解实施情况。 http://php.net/manual/en/mysqli.real-escape-string.php

答案 2 :(得分:-2)

您可以使用Heredoc来转义大段代码或文本

  $text = <<<HEREDOC
'<style>
    /* General */
    body {
        font-family: "Open Sans", sans-serif;
        color: #fdfcfc;
    }
    .container {
        max-width: 660px;
    }
    * {
      -webkit-box-sizing: border-box;
      -moz-box-sizing: border-box;
      box-sizing: border-box;
    }
    </style>
HEREDOC;

      UPDATE email_campaign_template 
                    SET content= '$text'
                    WHERE label='Property Flyer 01' 
                    AND email_campaign_id = '10';