oci_fetch_array出错,可以通过php从oracle中检索数据

时间:2011-04-15 20:44:41

标签: php oracle

我可以通过php从oracle db检索数据,当我尝试循环获取数据时,它会给我错误

未定义的索引:第15行的C:\ xampp \ htdocs \ testing \ test.php中的id

这是我的代码

<?php
$username = "kemo";
$password = "kemoacer77";
$server = "localhost/XE";
$conn = oci_connect($username, $password, $server);
if(!$conn){
die("connect error".oci_error());
}

$stid = oci_parse($conn, 'SELECT id, username FROM users');
oci_execute($stid);

while (($row = oci_fetch_array($stid, OCI_BOTH))) {
    // Use the uppercase column names for the associative array indices
    echo  $row['id'] ;
    echo $row['username'];
}

oci_free_statement($stid);
oci_close($conn);


?>

2 个答案:

答案 0 :(得分:1)

oci_fetch_array()的文档说:

  

Oracle的默认值,不区分大小写   列名将具有大写   结果中的关联索引   阵列即可。区分大小写的列名称   将使用数组索引   确切的列案例。使用
  结果数组上的var_dump()   验证适用的案例   每个查询。

您的代码中的评论也说:

// Use the uppercase column names for the associative array indices


那么,为什么使用小写列名?

这是你的代码:

echo  $row['id'] ;
echo $row['username'];

根据您的代码中的注释和手册中的注释,如果您不使用大写,请执行以下操作:

echo  $row['ID'] ;
echo $row['USERNAME'];


并且,如果这仍然不起作用,请按照手册中的说明操作:在循环中使用var_dump(),以查看数据的外观:

while (($row = oci_fetch_array($stid, OCI_BOTH))) {
    var_dump($row);
}

答案 1 :(得分:0)

在我的情况下,我使用了NVL

Oracle / PLSQL NVL函数允许您在遇到空值时替换值

NVL(string1,replace_with)

SELECT NVL(佣金,0)FROM sales;

输出:

123 223 323

423

回答会是这样的 123 223 323 0 423