从Oracle数据库中获取数据并使用PHP存储到数组中

时间:2015-09-22 10:52:36

标签: php oracle oracle10g

我正在尝试从数据库,time-with-time(时间戳)和值(数字)中获取数据,并使用php存储到数组中。

这是我在数据库中的数据,如下所示=

WD                                  DT

25-FEB-15 12.14.00.000000 AM    15.739993

25-FEB-15 12.23.00.000000 AM    13.698263   

25-FEB-15 12.43.00.000000 AM    13.214383

fetch.php

<?php
include("md.php");
$sql = "SELECT * from datatable";
$result =oci_parse($conn, $sql);
$r=oci_execute($result);
$arr = array();
$row=oci_num_rows($stid);
$arr[0]=array('wd','dt');

for($i=1; $i<($row+1); $i++)
{
    $arr[$i]= array(substr(oci_result($result, $i-1, "wd"),0,18),(float)oci_result($result,$i-1,"dt"));
    //$arr[$i]= array(substr(oci_result($result, $i-1, "wd"),0,18),(int)oci_result($result,$i-1,"dt"));

}
echo json_encode($arr);
//print_r($arr);
?>

$ arr得到以下输出:     [[“WD”],[“DT”]]

Q1。为什么我没有得到其他数据?我在哪里做错了?

但如果我使用

while($row = oci_fetch_row($stid)){

    $arr[] = $row;
}

如果我使用json_encode then =

[["25-FEB-15 12.14.00.000000 AM","15.739993"],["25-FEB-15 12.23.00.000000 AM","13.698263"],["25-FEB-15 12.43.00.000000 AM","13.214383"],....

如果我使用

while($row = oci_fetch_array($stid,OCI_ASSOC)){

  $arr[] = $row;
}

如果我使用json_encode then =

[{"WD":"25-FEB-15 12.14.00.000000 AM","DT":"15.739993"},{"WD":"25-FEB-15 12.23.00.000000 AM","DT":"13.698263"},........]

我希望输出如下=

[["25-FEB-15 12.14.00 AM",15.739993],["25-FEB-15 12.23.00 AM",13.698263],["25-FEB-15 12.43.00 AM",13.214383],....]

Q2。我怎样才能得到它? 请帮忙

1 个答案:

答案 0 :(得分:1)

由于数据是在关联数组中返回的,因此您将获得列名称以及返回给您的每行中每列的数据。所以这是在$row

中返回的
"WD" => "25-FEB-15 12.14.00.000000 AM", "DT" => "15.739993"

您需要做的就是从每一行中挑选数据并忽略Key,如下所示: -

$arr = array();

while($row = oci_fetch_array($stid,OCI_ASSOC)){

  $arr[] = array($row['WD'] , $row['DT']);
}

echo json_encode($arr);