使用'保存邮件和"在mysql DB中

时间:2014-08-15 10:18:02

标签: mysql varchar quote apostrophe

我在表格中有一个列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']是上面的消息。

1 个答案:

答案 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"."'

两者都有效。