但是,写完PHP代码调试的时候,我遇到了一个很古怪的问题,就是只有每一次开机第一次连能成功拿到数据,后来怎么试都不行,直接给出了错误信息。当时的PHP代码如下(这段代码从Oracle获得数据生成了一个表单):
$oraUser="VISITOR";
$oraPass="123456";
$oraDB="company";
$conn = OCILogon ($oraUser,$oraPass,$oraDB);
if (!$conn) {
exit;
}
$stmt = OCIParse($conn,"select * from visitor.employee");
if(!$stmt) {
exit;
}
OciExecute($stmt);
echo "n";
echo "
n名字性别员工编号工资部门出生日期进入公司日期nn";
while ($row = oci_fetch_array($stmt, OCI_ASSOC+OCI_RETURN_NULLS)) {
echo "n";
foreach ($row as $item) {
echo "" . ($item !== null ? htmlentities($item, ENT_QUOTES) : " ") . "n";
}
echo "n";
}
echo "n";
OCIFreeStatement($stmt);
OCILogoff($conn);
通过查阅资料,在一个英文论坛不起眼的地方发现有人说,这是PHP5的bug,。
当时就这么解决了,也没管。
当我做完东西,apache都拆了的时候,发现有些PHP网页里,我在使用完数据库之后漏写了OCILogoff,也就是没有释放连接。我猜这就是症结所在,因为所有的这些PHP都是用同一个账户连接的,产生了冲突,而oci_new_connect新建连接显然可以避免这个问题。
所以,我想,。不过,也没机会进行验证了,如果有同志遇到这样的问题,不妨试一下。