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 名称、字段名称)
我有一个 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 名称、字段名称)