Php 查询Oracle数据库的功能-';未定义索引';通知

Php 查询Oracle数据库的功能-';未定义索引';通知,php,arrays,oracle,select,oracle-call-interface,Php,Arrays,Oracle,Select,Oracle Call Interface,为了提供一些上下文,不久前,在VolkerK的帮助下,我在这个网站上创建了一个函数,该函数可以查询Oracle数据库,并根据索引将内容放入格式整洁的PHP数组中 问题是,在某些情况下,我只想从快速查询中返回一个值,当我这样做时,我会得到以下错误:注意:未定义索引: 以下是我使用的代码: function oracleGetData($query, $id = null) { global $conn; $results = array(); $sql = OCI_Par

为了提供一些上下文,不久前,在VolkerK的帮助下,我在这个网站上创建了一个函数,该函数可以查询Oracle数据库,并根据索引将内容放入格式整洁的PHP数组中

问题是,在某些情况下,我只想从快速查询中返回一个值,当我这样做时,我会得到以下错误:
注意:未定义索引:

以下是我使用的代码:

function oracleGetData($query, $id = null) {
    global $conn;

    $results = array();
    $sql = OCI_Parse($conn, $query);
    OCI_Execute($sql);
    while ( false!==($row=oci_fetch_assoc($sql)) ) {
        $results[ $row[$id] ] = $row;
    }

    // remove one layer if there's only one record
    if(count($results) == 1 and is_null($id)) {
        $results = array_pop($results);
    }
    return $results;
}
我已尝试更改填充数组的行,如下所示:

if(is_null($id)) {
    while ( false!==($row=oci_fetch_assoc($sql)) ) {
        $results[ $row ] = $row;
    }
} else {
    while ( false!==($row=oci_fetch_assoc($sql)) ) {
        $results[ $row[$id] ] = $row;
    }
}
基本上,如果$id变量为null,请删除对它的所有引用,但随后会出现“警告:非法偏移量类型”错误

任何帮助都将不胜感激,我已经尝试将我需要的单个字段传递到函数中,但得到了相同的错误


谢谢

如果$id为空,您可以使用顺序号作为索引,如下所示:

function oracleGetData($query, $id = null)
  { 
  global $conn; 

  $results = array(); 
  $sql = OCI_Parse($conn, $query); 
  OCI_Execute($sql); 

  if(is_null($id)) {
    $idx = 1;

    while (false!==($row=oci_fetch_assoc($sql))) { 
      $results[ $idx ] = $row;
      $idx = $idx + 1;
    }
  } else { 
    while ( false!==($row=oci_fetch_assoc($sql))) { 
      $results[ $row[$id] ] = $row;
    }
  } 

  // remove one layer if there's only one record 

  if(count($results) == 1 and is_null($id)) { 
    $results = array_pop($results); 
  } 

  return $results; 
  } 
分享和享受