Menu Close

[PHP][MYSQL] Statement tidak berfungsi

Saya mengalamai satu masalah di mana query MySQL UPDATE tidak berfungsi. Agak pelik apabila $db->prepare dan $db->query memberi respon yang kosong, tiada perubahan database server tiada juga error dalam log.

Disebabkan itu, saya cuba melakukan query tersebut di sekeliling code untuk mencari di manakah query tersebut berfungsi dan di mana tidak. Lalu saya dapati query tersebut tidak berfungsi selepas code ini:

if($sqlexec = $db->prepare("SELECT time from download_log WHERE userid=? ORDER BY id DESC LIMIT 1")){
    $sqlexec->bind_param("i", $userID);
    $sqlexec->execute();
    $sqlexec->bind_result($time);
    while($sqlexec->fetch()){
        $timeout = (time()-$time);
        if($timeout<5*60){   
          $msg->send("You must wait ".(5*60-$timeout)." seconds before adding a new link.", "HTML"); exit;
        }      
        break;
     }
}

Saya berfikir sejenak lalu memutuskan untuk menutup statement SQL tersebut menggunakan $sqlexec->close():

if($sqlexec = $db->prepare("SELECT time from download_log WHERE userid=? ORDER BY id DESC LIMIT 1")){
    $sqlexec->bind_param("i", $userID);
    $sqlexec->execute();
    $sqlexec->bind_result($time);
    while($sqlexec->fetch()){
        $timeout = (time()-$time);
        if($timeout<5*60){
            $msg->send("You must wait ".(5*60-$timeout)." seconds before adding a new link.", "HTML"); 
            exit;
        }
        break;
    }
    $sqlexec->close();
}

Berjaya! Saya tidak tahu kenapa statement ini tidak tertutup sendiri setelah selesai, tetapi mungkin membiasakan diri untuk menutup prepared statement setelah selesai adalah sesuatu yang bagus sekaligus dapat mengelakkan bug yang tidak dijangka.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x