我在表格中有一个列message_txt varchar(4096)
。
我想在这个字段中输入这样的信息:
"Hi,
My name is Aron and I'm from Canada.
My favourite Dj are "Alpha²" and "Ran-D"."
因此,当我进行查询时,它说我遇到了语法错误,因此我认为它来自'和#34;。所以我的问题是如何库存/保存它们?
我的查询:
mysql_query('
INSERT INTO MESSAGE (id_message,message_txt,auteur,date_creation,date_last_modif,statut)
VALUES
(NULL,"'.$_POST['message_sujet'].'","'.$_SESSION['Pseudo'].'",now(),now(),"Normal")
') or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
其中$_POST['message_sujet']
是上面的消息。
答案 0 :(得分:2)
由于您正在使用PHP和不推荐使用的mysql_ *扩展,因此您最好使用mysql_real_escape_string:
mysql_query('
INSERT INTO MESSAGE (id_message,message_txt,auteur,date_creation,date_last_modif,statut)
VALUES
(NULL,"'
. mysql_real_escape_string($_POST['message_sujet'])
. '","'
. mysql_real_escape_string($_SESSION['Pseudo'])
. '",now(),now(),"Normal")') or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
注意强>
您应该考虑将PDO或mysqli用于参数化的预准备语句,并将输入值绑定到参数。然后就不用担心逃避价值了。
如果您手动编写SQL语句,那么您可以使用反斜杠或将其加倍来转义单引号:
'"Hi, My name is Aron and I\'m from Canada. My favourite Dj are "Alpha²" and "Ran-D"."'
'"Hi, My name is Aron and I''m from Canada. My favourite Dj are "Alpha²" and "Ran-D"."'
两者都有效。