0

为了提供一些上下文,不久前在这个站点上的 VolkerK 的帮助下,我创建了一个函数,它查询 Oracle 数据库并将内容放入格式整齐的 PHP 数组中,具体取决于索引。这是原始问题

问题是,在某些情况下,我只想从快速查询中返回一个值,当我这样做时,会出现以下错误:Notice: Undefined index:

这是我正在使用的代码:

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 变量为空,请删除对它的所有引用,但随后出现“警告:非法偏移类型”错误。

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

谢谢

4

1 回答 1

1

也许如果 $id 是 NULL 你可以只使用索引的序号,如:

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; 
  } 

分享和享受。

于 2012-07-11T11:14:36.420 回答