Problema de consulta de atualização do MySQLi

Minha página define signin_time define-o para NOW() , define o logged_in para 1 quando o usuário com êxito se inscreve na página. O que eu quero fazer é configurar signout_time para NOW() quando o usuário assina também. Para este propósito, estou usando a próxima consulta

 $stmt = $db->prepare("UPDATE `ulog` SET `logged_in`=0, `signout_time`=NOW(),`ckey`= '', `ctime`= '' WHERE user_id=? AND logged_in=1") or die($db->error); 

Tentei executar esta consulta. Não retornou qualquer mensagem de erro, mas não notei nenhuma alteração na tabela db também, também o registro de erro php não mostra nada.

Talvez eu tenha erro de syntax (eu estou configurando logged_in=0 where logged_in=1 ). Não tenho outra idéia de como fazer isso. Talvez eu deveria procurar por linhas onde signout_time=0 ? Alguma sugestão?

ATUALIZAR

Aqui está a function inteira:

 function logout() { global $db, $wsurl; if (isset($_SESSION['user_id'])) { $userid = $_SESSION['user_id']; $stmt = $db->prepare("UPDATE `ulog` SET `logged_in`=0, `signout_time`=NOW() WHERE user_id=? AND logged_in=1") or die($db->error); } else { $userid = $_COOKIE['user_id']; $stmt = $db->prepare("UPDATE `ulog` SET `logged_in`=0, `signout_time`=NOW(),`ckey`= '', `ctime`= '' WHERE user_id=? AND logged_in=1") or die($db->error); } $stmt->bind_param("i", $userid) or die($stmt->error); $stmt->execute() or die($stmt->error); $stmt->close(); $_SESSION = array(); //destroy all of the session variables} session_destroy(); foreach ($_COOKIE as $c_id => $c_value) { setcookie($c_id, '', 1, "/"); } header("Location: " . $wsurl); } 

Você deve executar a consulta.

 $userId = 1; // some number $stmt->execute(array($userId)); 

Ou você poderia combiná-los em um usando método encadeamento:

  $db->prepare( "UPDATE `ulog` SET `logged_in`=0, `signout_time`=NOW(), `ckey`= '', `ctime`= '' WHERE user_id=? AND logged_in=1" )->execute(array($userId)); 

Além disso, verifique se o seu $userid está sendo configurado. Faça um var_dump() sobre ele e veja o que você obtém.

Você tentou diferentes methods de preparação / execução, parece que eu faço um pouco diferente do seu … não diga que definitivamente funcionará, mas vale a pena tentar, eu acho

 function logout() { global $db, $wsurl; if (isset($_SESSION['user_id'])) { $userid = $_SESSION['user_id']; $stmt = $db->prepare("UPDATE `ulog` SET `logged_in` = 0, `signout_time` = NOW() WHERE `user_id` = :userid AND `logged_in` = 1") or die($db->error); } else { $userid = $_COOKIE['user_id']; $stmt = $db->prepare("UPDATE `ulog` SET `logged_in` = 0, `signout_time` = NOW(), `ckey` = '', `ctime` = '' WHERE `user_id` = :userid AND `logged_in` = 1") or die($db->error); } $dataArray = array(':userid' => $userid); $stmt->execute($dataArray); $stmt->close(); $_SESSION = array(); session_destroy(); foreach ($_COOKIE as $c_id => $c_value) { setcookie($c_id, '', 1, "/"); } header("Location: " . $wsurl); }