题
我已经更新了许多记录,但是当涉及到包含引号的单词时,我收到此错误:“错误:未公开引用@ 1357”
我知道为什么它会给我这个错误,我只是不知道如何解决它。
以下是一个示例:
UPDATE invnum SET cAccountName
= replace( cAccountName
,'JOHN'S','BEN')
提前致谢。
解决方案
在字符串中转义引号:
UPDATE invnum SET cAccountName = replace(cAccountName,'JOHN\'S','BEN')
你想要非常小心 - 不正确处理这个问题是 SQL的来源注入攻击,是安全问题的主要来源。
其他提示
如果您使用脚本更新记录,请使用内置转义函数。 for php将是 mysql_real_escape_string
请改为尝试:
UPDATE invnum SET cAccountName = replace(cAccountName,"JOHN'S","BEN")
如果你需要在一个字符串中使用这两种类型的引号,那么当你在字符串中出现时,你需要转义用来包围字符串的引号类型(否则SQL解释器会认为字符串在它之前结束)实际上。
例如:
Johns becomes "Johns"
John's becomes "John's" or 'John\'s'
"John" becomes '"John"' or "\"John\""
等等。
不隶属于 StackOverflow