这是我坚持使用的数据库类的过去的纸质问题。我正准备考试,所以可以给出答案。
考虑以下架构:
Borrow(userid: string, callnum: string, copynum: integer, checkout: date, return: date)
这是有错误的PHP函数。
function countCheckedOutBookCopies($callnum){
$sql = "SELECT COUNT(*) AS bookcount FROM borrow
WHERE return = null and callnum = '".$callnum."'";
$stid = oci_parse($this->conn, $sql); //assume $this->con is correct
if($row = oci_fetch_object($stid)){
return $row->bookcount;
} else{
return -1;
}
}
有3个问题。
1.找出错误并修复它。
2.发生另一个错误,修复它。
3.尽管所有内容都已修复,但该功能始终为return -1
。这是为什么?
我只熟悉使用MySQL的程序化PHP。但是我尝试运行代码并且导致$ stid一直返回布尔值,因为我不知道哪个部分是正确的,哪个部分是错误的。
以下是我尝试过的事情
1.将'".$callnum."'
简单地改为'$callnum'
(因为这是我在MySQL中总是这样做的)
2.将return = null
更改为return = 'null'
(但我不认为是这种情况)
3.获取COUNT(*)
而不仅仅是*
提前致谢!
答案 0 :(得分:0)
尽管“发现错误”和“发生了另一个错误”:
1。)“return is null
”,
2。)this->conn
可能应该是this->con
,
3。)代码缺失oci_execute($stid);
,
4。)oci_free_statement($stid);
。
function countCheckedOutBookCopies($callnum){
$sql = "SELECT COUNT(*) AS bookcount FROM borrow
WHERE return is null and callnum = '$callnum'";
$stid = oci_parse($this->con, $sql); //assume $this->con is correct
oci_execute($stid);
$ret = -1;
if($row = oci_fetch_object($stid)){
$ret = $row->bookcount;
}
oci_free_statement($stid);
return $ret;
}