我可以通过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);
?>
答案 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