我目前遇到的问题是我正在使用的 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语句?
答案 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';