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
相关产品推荐
相关产品推荐

