我正在从数据库中检索表行。看起来我成功检索了1行,但是当我尝试访问该行时,它最终无法进行评估。
请注意,我知道其中存在SQL注入漏洞,但这不是我有兴趣解决此问题的主要问题:
<?php
include("core/connection.php");
if (!empty($_POST)) {
$stid = oci_parse($conn,
"SELECT CustomerNo FROM Customers WHERE Username = '" . $_POST['username']
. "' AND Password = '" . $_POST['password'] . "'");
oci_execute($stid);
$count = oci_fetch_all($stid, $res);
echo "$count rows";
$row = oci_fetch_array($stid, OCI_NUM);
echo $row['0'];
oci_free_statement($stid);
oci_close($conn);
}
?>
当我这样做时
echo "$count rows";
它显示1行,但是当我做
时echo $row['0'];
它什么都不返回。
答案 0 :(得分:10)
oci_fetch_array()
标志的 OCI_ASSOC
获取 关联 数组,而不是枚举数组....这意味着数组键是数据库查询中的列名,而不仅仅是数字
因此$row['CUSTOMERNO']
存在,$row[0]
没有
请参阅documentation了解详情
修改强>
此外,您最初调用oci_fetch_all()
的事实意味着您已经将完整的结果集检索到$res
,因此当您调用oci_fetch_array()
时,内部指针已经在最后结果集,所以不会再返回任何内容。