SQL 带有斜杠的请求,但在 firebug 中出错

SQL request with addslashes but error in firebug

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

这是我的 sql 请求:

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

在那之前,我有这个:

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

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

Warning: pg_query(): Query failed: ERROR: syntaxe error on « hiver » LINE 1: ...M_ASK',annee_ref_c_amg='1958',nom_culture='Blé d\'hiver',dat...

它在 "d'\hiver" 上显示错误所以我不明白为什么,因为我不应该再有引号错误了。

有人可以帮我吗?

在 Postgre 中SQL 你必须使用 pg_escape_string:

pg_escape_string() 对查询数据库的字符串进行转义。它 returns PostgreSQL 格式的转义字符串,不带引号。 pg_escape_literal() 是为 PostgreSQL 转义 SQL 参数的首选方法。 addslashes() 不得与 PostgreSQL 一起使用。如果列的类型是 bytea,则必须使用 pg_escape_bytea() 代替。 pg_escape_identifier() 必须用于转义标识符(例如 table 名称、字段名称)

参见:http://php.net/manual/en/function.pg-escape-string.php