You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP使用ADODB连接PostgreSQL:ADODB_ASSOC_CASE不生效求助

解决ADODB_ASSOC_CASE无法设置为UPPER的问题

你遇到的问题是PostgreSQL的ADODB驱动会在连接过程中重置ADODB_ASSOC_CASE的设置,导致提前定义的常量被覆盖。可以通过以下两种方式强制设置为UPPER:

方法一:连接数据库后手动设置

在数据库连接成功后,直接修改连接对象的assoc_case属性,同时确保获取模式正确:

require "./adodb.inc.php";
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
 
$db = ADONewConnection('postgres');
$db->connect($host, $user, $password, $database);
// 强制设置关联数组键为大写
$db->assoc_case = ADODB_ASSOC_CASE_UPPER;
// 确认获取模式
$db->SetFetchMode(ADODB_FETCH_ASSOC);

方法二:实例化连接对象后、连接前设置

在调用connect()方法之前,先给连接对象的assoc_case属性赋值,避免驱动在连接时覆盖:

require "./adodb.inc.php";
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
 
$db = ADONewConnection('postgres');
// 提前设置关联键大小写
$db->assoc_case = ADODB_ASSOC_CASE_UPPER;
$db->connect($host, $user, $password, $database);

原理说明

PostgreSQL的ADODB驱动文件(如adodb-postgres64.inc.php)在连接逻辑中会将assoc_case重置为ADODB_ASSOC_CASE_NATIVE,所以仅通过定义常量ADODB_ASSOC_CASE无法生效,直接操作连接对象的属性才能强制覆盖这个设置。

内容的提问来源于stack exchange,提问作者sanket

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 07:34:58