我有一个名为“eventName”的输入字段。每次我将单引号(例如叔叔的生日)都不会插入数据库。我的意思是根本没有数据会发布到数据库。系统只会说事件已保存,但数据库中没有存储数据。
答案 0 :(得分:1)
你需要逃避单引号。在这种情况下使用的转义字符,您可以使用内置函数,如mysqli_escape_string或add-slashes。
在变量中添加单引号并将其添加到查询时,这将通过将单引号视为注释来更改查询。 e.g
Insert into Table ('name') values ('uncle's birthday');
你的查询在叔叔结束,之后的部分不予考虑,基本上会导致失败。您应该检查错误代码,具体取决于您使用的数据库。
更新
$ eventName = add_slashes($ _ POST [' eventName']);
答案 1 :(得分:1)
不要简单地添加斜杠,而应考虑准备好的语句,从而防止SQL注入攻击。有关详细信息,请访问:How can I prevent SQL injection in PHP?
答案 2 :(得分:0)
最好在将值写入数据库之前转义值。
$ escapedName = mysqli_real_escape_string($ _ POST ['eventName']);