php中的result,PHP 从结果资源中返回值

用户评论:

Alan U. Kennington (2006-09-22 06:49:33)

See bug #33809 http://bugs.php.net/bug.php?id=33809

Whether this really is a bug or a feature is not clear.

However, it is probably best to always put your column names in extra quotes.

$res = pg_query(...);

$colname = pg_field_name($res, $j);

pg_fetch_result($res, $i, "\"$colname\"");

Alan U Kennington (2006-09-22 05:16:50)

In order to use upper case in pg_fetch_result column names, it is apparently necessary to include explicit quotation marks.

Thus when I do this sort of thing:

$res = pg_query(...);

$ncols = pg_num_fields($res);

for ($j = 0; $j < $ncols; ++$j) {

$colname[$j] = pg_field_name($res, $j);

$name = htmlspecialchars($colname[$j]);

print("Column $j name = \"$name\"\n");

$value = htmlspecialchars(pg_fetch_result($res, 0, $colname[$j]));

print("Column \"{$colname[$j]}\" value = \"$value\"\n");

}

I get this sort of thing:

[....]

Warning: pg_fetch_result() [function.pg-fetch-result]: Bad column offset specified in /.../view.php on line 247

Column 8 name = "VEC index"

Column "VEC index" value = ""

But if I change the $value line to this:

$value = htmlspecialchars(pg_fetch_result($res, 0, "\"$colname[$j]\""));

I get this:

[...]

Column 8 name = "VEC index"

Column "VEC index" value[0] = "47"

In my opinion, pg_fetch_result(...) should use the quotes already. In other words, this may be a bug in the PHP postgres library. It does not seem to be a documented feature of pg_fetch_result() although the postgresql manual documents it under "SQL syntax", "Lexical structure".

PHP version 5.1.4.

psql version 8.1.4.

Akbar (2004-12-01 08:01:17)

Use can use pg_fetch_result when getting a value (like a smallint as in this example) returned by your stored procedure

$pgConnection=pg_connect("dbname=users user=me");$userNameToCheckFor="metal";$result=pg_query($pgConnection,"SELECT howManyUsersHaveThisName('$userNameToCheckFor')");$count=pg_fetch_result($result,0,'howManyUsersHaveThisName');?>

newby_AT_nobletec_DOT_com (2002-09-04 08:12:19)

Comment on boolean fields:

If you retrieve a boolean value from the PostgreSQL database, be aware that the value returned will be either the character 't' or the character 'f', not an integer. So, the statement

if (pg_fetch_result($rsRecords,0,'blnTrueFalseField')) {

echo "TRUE";

} else {

echo "FALSE";

}

will echo "TRUE" in either case (True or False stored in the field). In order to work as expected, do this instead:

if (pg_fetch_result($rsRecords,0,'blnTrueFalseField') == 't') {

echo "TRUE";

} else {

echo "FALSE";

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值