URL を介して値を受け取り、MySQL データベースにエントリを追加するか、削除するか、他の誰かがそのスロットを予約している場合は削除できないプログラムを作成しています。
追加および削除機能は次のとおりです。
function addBooking($id, $desk, $member, $date){
global $dbconn;
$query = $dbconn -> prepare("INSERT INTO booked (booking_id, desk_id, member_id, date_booked) VALUES (?,?,?,?)");
$query -> bind_param("iiis", $id, $desk, $member, $date);
$query->execute();
print '<div class="yours" title="Your Booking">Your Booking</div>';
$query -> close();
}
function delBooking($id, $desk){
global $dbconn;
$query = $dbconn -> prepare("DELETE FROM booked WHERE booking_id = ? AND desk_id = ?");
$query -> bind_param("ii", $id, $desk);
$query->execute();
print '<div class="free" title="Click To Book">Not Booked</div>';
$query -> close();
}
それらを呼び出すコードは次のとおりです。
$query = $dbconn -> prepare("SELECT firstname, lastname, booked.member_id, date_booked FROM members, booked WHERE (members.member_id = booked.member_id) AND booking_id = ? AND desk_id=?");
$query -> bind_param("ss", $booking_id, $desk_id);
if($query->execute() == true) {
$query -> bind_result($fname, $lname, $memid, $dbooked);
$query -> fetch();
if($fname){
if ($memid == $member_id)
{
delBooking($booking_id,$desk_id);
}
else
{
print '<div class="taken" title="Booked by <strong>'.$fname.' '.$lname.'</strong><br>On '.$dbooked.'">Booked</div>';
}
}else{
addBooking($booking_id,$desk_id,$member_id,$date);
}
}
予約の罰金を追加し、他の誰かがそれを予約したかどうかも通知しますが、自分の予約で再度実行すると、次のエラーが表示されます。
Fatal error: Call to a member function bind_param() on a non-object in /var/www/new/functions/functions.php on line 80
理由はわかりません。addBooking 関数の名前を delBooking に変更できるので、delete ステートメントなどではありません。同じ作業コードであり、まったく同じエラーが発生します:/