【问题标题】:PHP PDOStatement::fetchAll returned array contains resource?PHP PDOStatement::fetchAll 返回的数组包含资源?
【发布时间】:2018-07-30 20:56:51
【问题描述】:

我正在从 oracle 数据库中获取数据:

我的代码很简单

$stmt = $con->prepare($query);
$stmt->execute($data);
$res = $stmt->fetchAll(PDO::FETCH_ASSOC);

PHP 为 $res 中很长的字符串提供了资源 ID。

我希望它们作为字符串而不是资源 ID。

所以我可以设置

$con->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);

但是现在所有的值都是字符串。不仅仅是资源。

有没有办法做到这一点?

(是的,我知道资源 ID 可能更好,但在这种情况下我希望它作为字符串)

【问题讨论】:

标签: php oracle pdo


【解决方案1】:

一般规则是使用 PHP OCI8 等原生驱动程序,而不是有限的 PHP PDO 接口。使用 OCI8,您可以执行以下操作:

while (($arr = oci_fetch_array($s, OCI_ASSOC))) {
    $arr = oci_fetch_array($s, OCI_ASSOC+OCI_RETURN_LOBS);
    echo $arr['BLOBDATA'];   // do something with the LOB
    unset($arr);             // free PHP's memory before fetching the next LOB.
}

查看 PHP 手册页或 LOB 章节 http://www.oracle.com/technetwork/topics/php/underground-php-oracle-manual-098250.html

【讨论】:

    猜你喜欢
    • 2012-01-12
    • 2013-01-07
    • 2011-07-08
    • 2013-09-22
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    相关资源
    最近更新 更多