我正在尝试使用文本区域将一些数据添加到MySQL数据库中。但是,当有人添加撇号时,它会破坏INSERT命令,因为它充当单引号。如何解决这个问题?
如果您规定了我正在使用的所有变量,那么命令将会是什么样子。
INSERT INTO skills09 (name, birthday, skills) VALUES ('Tom Haverford', '31_02_1987', 'Being Awesome, Announcing cool things, Treatin' Yo Self, Failing');
当我看到这个时,我有一个想法。
是否像在我的变量名称周围使用双引号而不是单引号一样简单?这似乎是一个简单的修复,但我总是在MySQL中使用单引号。
答案 0 :(得分:1)
你可以逃避'带有前面的'
INSERT INTO技能09(名字,生日,技能)价值观('Tom Haverford','31_02_1987','很棒,宣布很酷的东西,对待'哟自我,失败');
它基本上是一个骗局 How do I escape a single quote in SQL Server?如果您提供了有关您正在使用的语言的更多信息,或者确切了解用户如何形成此sql语句,我可以提供更多信息。例如,你基本上会通过一个函数来运行用户的输入,该函数在将它发送到sql server之前替换'with''(2个单引号)..在sql server中它将被正确存储为'
“转义”字符只是一种不计入结尾单引号的方式,并允许将其添加到插入中。
答案 1 :(得分:0)
PHP How to replace customers text area apostrophes with a escape character
$lastname = "O'Reilly";
$_lastname = mysqli_real_escape_string($lastname);
$query = "SELECT * FROM actors WHERE last_name = '$_lastname'";