0

[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

Pengaktifan Remote Connection MySQL

Saya seringkali menghadapi masalah sambungan MySQL dari jarak jauh apabila berpindah pelayan (server). Di sini saya ingin berkongsi perkara yang harus dilakukan agar sambungan jarak jauh (remote connection) berfungsi.

Pastikan anda mempunyai akses root. Kemudian, edit /etc/mysql/my.cnf:

$ sudo nano /etc/mysql/my.cnf

Kemudian cari bahagian ini:

bind-address = 127.0.0.1

Dan comment baris tersebut seperti berikut

#bind-address = 127.0.0.1

Langkah terakhir adalah restart proses MySQL

$ sudo service mysql restart

Jangan lupa bahawa anda masih perlu menambah akaun di dalam database anda dengan akses dari localhost serta Any Host yang mana kedua-dua mempunyai username yang sama