我有一个sql请求,在firebug我有一个错误。
这是我的sql请求:$sql = "UPDATE public.".$tableBDD." SET ".$champsDB." WHERE ".$idTable."='".$idUpdate."'";
在那之前,我有这个:
$champsDB.= $champs->nom.'='''.addslashes($ligne[$i]).''',';
它应该可以工作,因为我在字符串中添加了斜杠。但是我的错误是:
警告:pg_query(): Query failed: ERROR: syntax ERROR on«hiver»第一行:……M_ASK’,annee_ref_c_amg = ' 1958 ', nom_culture = '祝福 d ' '养蜂人",dat…
它显示了"d''hiver"上的错误,所以我不明白为什么,因为我不应该再出现引号错误了。
谁能帮我一下?
在PostgreSQL中必须使用pg_escape_string:
pg_escape_string()转义查询数据库的字符串。它以PostgreSQL格式返回一个没有引号的转义字符串。pg_escape_literal()是PostgreSQL转义SQL参数的首选方法。addslashes()不能在PostgreSQL中使用。如果列的类型是bytea,则必须使用pg_escape_bytea()。Pg_escape_identifier()必须用于转义标识符(例如表名,字段名)
见:http://php.net/manual/en/function.pg-escape-string.php