MySQL添加额外的反斜杠?

时间:2011-03-02 11:24:57

标签: mysql

@@SESSION.sql_mode;
@@GLOBAL.sql_mode;

两个都是空白的,my.cnf没有显示“NO_BACKSLASH_ESCAPE”标志,这是查询的一部分,它在我的本地服务器上运行但不在我的主服务器上运行。

UPDATE `table` 
SET `data` = "[{\"_talent\'s\"etc"

现在我知道我可以使用“[{”“_ talents”“etc”,但我不愿意,因为我更容易遵守以前一直有效的逃避安全方法。

charset是我正在更新的表的UTF-8。最奇怪的是它适用于插入而不是更新!

这个让我抓狂。有什么想法吗?

干杯

编辑:

我发现服务器正试图像这样解释查询:

Failed to execute SQL : SQL UPDATE `build` SET `data` = "[{\"_talent\'s" WHERE `build_id` = 1 AND `userId` = 1128; failed : 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 'UPDATE `build` SET `data` = "[{\\"_talent\\'s" WHERE `build_id` = 1 AND `userId`' at line 1

但肯定它应该是一样的,为什么SQL引擎逃脱了逃脱!? (如果我省略了转义,则查询仍然失败)

3 个答案:

答案 0 :(得分:0)

你可以试试这个 -

UPDATE 'table' 
SET 'data' = '[{"_talents"etc'

答案 1 :(得分:0)

这是相关的吗?

MySQL / PHP problem with " and '

这意味着您可能会在某处添加额外的反斜杠(这可以解释为什么您在服务器上而不是本地计算机上出现奇怪的行为)?

两个平台上的不同行为意味着服务器上的一些配置问题对我来说(你确定它们是相同的版本吗?)我虽然在这里达到了一点。

答案 2 :(得分:0)

我发现它似乎是我的webmin版本在控制台上添加它... d'oh

当我从PHP运行查询时,它完美地完成了。

非常感谢。