我已经更新了许多记录,但是当涉及到包含引号的单词时,我收到此错误:“错误:未公开引用@ 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\""

等等。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top