我已成功连接到数据库,并成功提取数据并使用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>");
}
}
有什么建议吗?
提前致谢
答案 0 :(得分:1)
数组([SLGRPN] =&gt; 12626 ......
数组键区分大小写,您需要使用
$det=$row['SLGRPN'];
不确定为什么字段名称变成大写 - 这可能是db2的特征。
答案 1 :(得分:1)
缺省情况下,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"