В Firebird по умолчанию, в основном по историческим причинам, если вы не используете двойные кавычки в именах объектов (имен полей, таблиц и т. Д.), Они имеют прописную букву-d и хранятся внутри в верхнем регистре.
Соответственно, имена столбцов, которые вы получаете в наборе результатов, указаны в верхнем регистре, поэтому вы должны обращаться к ним в верхнем регистре, как $row['FIELD_NAME']
.
В качестве альтернативы, в PHP драйвер PDO имеет специальный флаг , используемый для соединения, PDO::ATTR_CASE => PDO::CASE_LOWER/NATURAL/UPPER
, который настраивает необходимый регистр для вас.
Например:
$source = $d['kind'].':'.'dbname='.$d['host'].':'.$d['base'].';charset='.$d['charset'];
$options = $d['options'] + [
\PDO::ATTR_CASE => \PDO::CASE_LOWER,
\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION
];
$connection = new \PDO($source, $d['user'], $d['password'], $options);
Firebird не один делает это. Oracle также хранит метаданные по умолчанию в верхнем регистре. Некоторые СУБД имеют опции, другие по умолчанию в нижнем регистре.