为什么带单引号的字符串在插入DB时会引发错误?

dre*_*ard 2 php mysql string quotes apostrophe

我的问题是:你如何在字符串中允许单引号?

例如,我有一个表单和一个文本框.它被设置为允许用户输入他们的名字.从那里,它将数据发布并提供给数据库.

我需要能够允许单引号(撇号),因为有些人的名字在他们的名字中有撇号,例如"O'Reilly".

有什么建议?

mar*_*rio 8

单引号不以任何方式被禁止.我只是假设你在插入数据库时​​遇到错误.这可能是由于mysql_real_escape_string()输入值的遗漏.

如果您尝试INSERT ... ('O'Reilly')SQL转义函数的全部内容,您将收到SQL错误.

(这就是magic_quotes最初引入的原因:让SQL为新手开箱即用. - 不要让它特别安全.)


Sam*_*152 5

对插入数据库的任何文本使用mysql_real_escape_string()函数.如果要将数据直接发布到数据库中,则可能在脚本中出现错误,因为您实际执行的操作是结束MySQL引用.

您逃避数据也是一种安全必需品.你应该拥有以下内容:

$q = "INSERT INTO `table` (`body`) VALUES ('".mysql_real_escape_string($_POST['body'])."')";
Run Code Online (Sandbox Code Playgroud)