我有一个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”的错误所以我不明白为什么因为我不应该再引号出错了。
有人能帮助我吗?
答案 0 :(得分:0)
在PostgreSQL中你必须使用pg_escape_string:
pg_escape_string()转义用于查询数据库的字符串。它返回PostgreSQL格式的转义字符串,不带引号。 pg_escape_literal()是转义PostgreSQL的SQL参数的首选方法。 addslashes()不能与PostgreSQL一起使用。如果列的类型是bytea,则必须使用pg_escape_bytea()。必须使用pg_escape_identifier()来转义标识符(例如表名,字段名)