これは、私が立ち往生しているデータベース クラスの過去の紙の質問です。私は試験の準備をしているだけなので、答えを教えても大丈夫です.
次のスキーマを検討してください。
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'
(しかし、私はそうではないと思う)
COUNT(*)
3.たぶん、ただの代わりに取得するという概念に何か問題があります*
編集: 考えただけ: oci8 と MySQL はほとんど同じことをしているように感じますが、どちらかを優先する理由はありますか? 確かに MySQL の方が人気がありますが、私の学校では試験問題に oci8 を使用することを好むようです。
前もって感謝します!