PHP db2_fetch_assoc & db2_fetch_both

发布于 2024-12-08 05:43:27 字数 652 浏览 0 评论 0原文

我成功连接到数据库,并使用 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>");
}
}

有什么建议吗?

提前致谢

I'm successfully connecting to the database, and successfully pulling data and displaying it using db2_fetch_array and db2_fetch_both. The code below works just fine

$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>");
}
}

The problem comes up when i'm changing the index to column name in db2_fetch_assoc() or db2_fetch_array() - the code below prints nothing.

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

Any suggestions?

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

数组 ( [SLGRPN] => 12626 ...

数组键区分大小写,您将需要使用

$det=$row['SLGRPN'];

不确定为什么字段名称变成大写 - 这可能是 db2 的一个特性。

Array ( [SLGRPN] => 12626 ...

Array keys are case sensitive you you will need to use

$det=$row['SLGRPN'];

not sure why the field names get turned into uppercase - it might be a characteristic of db2.

粉红×色少女 2024-12-15 05:43:27

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"

DB2 identifiers are case-insensitive by default, and will use/return uppercase field names, unless your columns are defined within double quotes (same applies for table names):

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

Querying this table:

SELECT bar, "baz" FROM foo;

... in PHP would return something like:

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

So you'd have to do:

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

To remove any ambiguity, you can change your queries:

SELECT BAR FROM FOO;

...or define all fields and table names with double quotes:

SELECT "bar", "baz" FROM "foo"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文