0

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

这是我的 sql 请求:

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

在此之前,我有这个:

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

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

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

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

有人能帮助我吗 ?

4

1 回答 1

0

在 PostgreSQL 中你必须使用 pg_escape_string:

pg_escape_string() 转义一个用于查询数据库的字符串。它返回不带引号的 PostgreSQL 格式的转义字符串。pg_escape_literal() 是为 PostgreSQL 转义 SQL 参数的更优选方式。addlashes() 不得与 PostgreSQL 一起使用。如果列的类型是 bytea,则必须使用 pg_escape_bytea() 代替。pg_escape_identifier() 必须用于转义标识符(例如表名、字段名)

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

于 2015-09-04T08:03:30.563 回答