【问题标题】:Query a sequence of data from ORACLE DB and Save the values in an PHP array从 ORACLE DB 中查询数据序列并将值保存在 PHP 数组中
【发布时间】:2015-04-16 02:17:38
【问题描述】:

我需要运行查询并将值保存在 PHP 数组中。这样以后,我可以将数组传递到 json 中,甚至可以运行 sizeof() 进行数据操作。到目前为止,我的查询是这样的,

   WITH DATA
     AS (SELECT TO_DATE ('2012-01-02', 'YYYY-MM-DD') date1,
                TO_DATE ('2012-02-20', 'YYYY-MM-DD') date2
           FROM DUAL)
 SELECT TO_CHAR (date1 + LEVEL - 1) datename,
        TO_CHAR (date1 + LEVEL - 1, 'fmMonth') month_name,
        TO_CHAR (date1 + LEVEL - 1, 'IW') the_week,
        TO_CHAR (date1 + LEVEL - 1, 'D') the_day,
        TO_CHAR (date1 + LEVEL - 1, 'DAY') the_day_name
   FROM data
CONNECT BY LEVEL <= date2 - date1 + 1

而 php 是,

$days = array();
            while ($row = oci_fetch_array($dateHeaderParse)){ 
                $days = $row['THE_DAY'];
            }
            ?>

当我用这个执行时,

    print_r($days);

它只返回两个,应该超过两个。查询运行良好。

请帮帮我

【问题讨论】:

  • 你使用的是$days = $row['THE_DAY'];——不应该是array_push($days, $row['THE_DAY']);吗?
  • 谢谢,你能把答案再发一遍吗?

标签: php sql oracle


【解决方案1】:

您的问题是,当您遍历来自oci_fetch_array 的结果时,您将$days 设置为当前结果,并丢弃以前的值。您实际上应该像这样将结果附加到$days

$days = array();
while ($row = oci_fetch_array($dateHeaderParse)){ 
    array_push($days, $row['THE_DAY']);
}

我不是 PHP 开发人员,所以这可能行不通,但您可以使用 oci_fetch_allarray_map 来执行此操作,如下所示:

$days = array_map(function($row) {return $row['THE_DAY'];},
    oci_fetch_all($dateHeaderParse));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 2020-09-29
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多