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

Can't escape semicolons in a MySQL UPDATE statement

我目前在使用 MySQL UPDATE 语句时遇到问题。出于某种原因,我无法转义语句中的分号。

如果我从语句中删除所有分号它工作正常,所以我知道它与转义分号有关。

我已经尝试了通过在它们前面加上 \ 来转义它们的标准方法,但是这没有任何作用。

我也试过switching/swapping把所有的单引号换成双引号,把双引号换成单引号,来颠倒它们的顺序,这也没有任何作用。

这是我要执行的语句:

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 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''<style> /* General */ body { font-family: "Open Sans", sans-serif' at line 2

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

您可以使用 mysqli_real_escape_string()

来清理您的查询

参见实施文档。 http://php.net/manual/en/mysqli.real-escape-string.php

您可以使用 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';

只要您想在字符串中加入分号,请使用 CHAR(59)。