带有addslashes的SQL请求但在firebug中有错误

时间:2015-09-04 07:56:36

标签: php sql postgresql addslashes

我有一个sql请求,在firebug中我有一个错误。

这是我的sql请求:

$sql = "UPDATE public.".$tableBDD." SET ".$champsDB." WHERE ".$idTable."='".$idUpdate."'";

在此之前,我有这个:

$champsDB.= $champs->nom.'=\''.addslashes($ligne[$i]).'\',';

所以它应该工作,因为我在我的字符串中添加斜杠。但我的错误是:

  

警告:pg_query():查询失败:ERROR:«hiver»语法错误   第1行:...... M_ASK',annee_ref_c_amg ='1958',nom_culture ='Blé d \'hiver ',dat ...

它显示了“d'\ hiver”的错误所以我不明白为什么因为我不应该再引号出错了。

有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

在PostgreSQL中你必须使用pg_escape_string:

pg_escape_string()转义用于查询数据库的字符串。它返回PostgreSQL格式的转义字符串,不带引号。 pg_escape_literal()是转义PostgreSQL的SQL参数的首选方法。 addslashes()不能与PostgreSQL一起使用。如果列的类型是bytea,则必须使用pg_escape_bytea()。必须使用pg_escape_identifier()来转义标识符(例如表名,字段名)

请参阅:LaxRedirectStrategy