PHP db2_fetch_assoc & db2_fetch_both - PullRequest
0 голосов
/ 05 октября 2011

Я успешно подключаюсь к базе данных, успешно извлекаю и отображаю данные, используя db2_fetch_array и db2_fetch_both. Код ниже работает просто отлично

$file="m03slsd0";
$file=db2_escape_string($file);
$query="SELECT slgrpn,slfrkn,slftyp,slfsze,slpqty,slpwht,slentp,slkplt FROM HUTALIB.$file";
$quepre=db2_prepare($conn,$query);
$quexe=db2_execute($quepre);

while($row=db2_fetch_both($quepre))
{
$det=$row[0];
if($det!='')
{
printf($det."</br>");
}
}

Проблема возникает, когда я меняю индекс на имя столбца в db2_fetch_assoc () или db2_fetch_array () - код ниже ничего не печатает.

while($row=db2_fetch_both($quepre))
{
$det=$row['slgrpn'];
if($det!='')
{
printf($det."</br>");
}
}

Есть предложения?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 06 октября 2011

Идентификаторы DB2 по умолчанию не чувствительны к регистру и будут использовать / возвращать имена полей в верхнем регистре, если столбцы не определены в двойных кавычках (то же самое относится и к именам таблиц):

CREATE TABLE foo ( bar integer, "baz" integer );

Запрос к этой таблице:

SELECT bar, "baz" FROM foo;

... в PHP вернет что-то вроде:

Array (
    [BAR] => something
    [baz] => something   
)

Так что вам нужно сделать:

echo $array['BAR'];
echo $array['baz'];

Чтобы устранить двусмысленность, вы можете изменить свои запросы:

SELECT BAR FROM FOO;

... или определить все поля и имена таблиц в двойных кавычках:

SELECT "bar", "baz" FROM "foo"
1 голос
/ 06 октября 2011

Array ([SLGRPN] => 12626 ...

Ключи массива чувствительны к регистру, вам нужно использовать

$det=$row['SLGRPN'];

не уверен, почему имена полей переводятся в верхний регистр - это может быть характеристикой db2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...