0

我有一个表,其中包含带引号和不带引号的列名,例如:username"phoneNumber". 当我查询数据库时,这些列都显示为不带引号。目前,我正在使用:

$array = pg_fetch_all(pg_query($db, $query));

当我从数据库中查询行时,有什么方法可以保留引号?

4

1 回答 1

1

你基本上有两个选择。传统的建议是“不要使用带引号的标识符,只需小写所有内容。” 这很好,而且更可取,因为它减少了错误地对错误的表或列运行查询的情况。

另一种选择是一直引用所有内容。这样您就不必担心保留引用,因为它始终存在。

在 LedgerSMB 中,我们实际上两者都做。引用主要是为了避免 SQL 注入(我们通过返回引用字符串的函数运行标识符)。但是,我们还对小写名称进行了标准化,以便在 psql 等中运行查询时引用不会引起问题。所以我的建议是pg_escape_identifier一致地使用小写标识符并标准化。

于 2013-04-22T05:45:15.337 回答