вставка последнего входа в mysql

У меня есть сценарий входа в систему, и я хочу вставить последний вход в таблицу участников и обновлять его каждый раз, когда член входит в систему, но у меня возникают некоторые проблемы. Последний логин не вставляется каждый раз, когда пользователь входит в систему. Вот мой код

if(isset($_POST['submit'])){ $username = $_POST['username']; $password = $_POST['password']; if($user->login($username,$password)){ $_SESSION['username'] = $username; try{ $stmt = $db->prepare('UPDATE admin SET login_date = now()'); } catch (PDOExeception $e){ $error[] = $e->getMessage(); } header('Location: index.php'); exit; } else { $error[] = '<div class="alert alert-danger fade in text-center"> <a href="#" class="close" data-dismiss="alert">&times;</a> <strong>Error!</strong> Wrong username or password or your account has not been activated. </div>'; } } 

Related of "вставка последнего входа в mysql"

  1. Вы не выполняете запрос
  2. Добавить WHERE для имени пользователя
  3. Начало сеанса

     session_start(); if($user->login($username,$password)) { $_SESSION['username'] = $username; try { $stmt = $db->prepare('UPDATE admin SET login_date = now() WHERE username =:username'); $stmt->bindValue(':username', $username); $stmt->execute(); $stmt->CloseCursor(); $stmt=null; } catch (PDOExeception $e) { $error[] = $e->getMessage(); } header('Location: index.php'); exit; } else { $error[] = '<div class="alert alert-danger fade in text-center"> <a href="#" class="close" data-dismiss="alert">&times;</a> <strong>Error!</strong> Wrong username or password or your account has not been activated. </div>'; } 

Кажется, что есть два ошибки с указанным выше кодом.

  1. У UPDATE нет предложения where, поэтому он обновит login_date для всех строк в таблице admin .

  2. Вы создаете объект PDOStatement, вызывая метод prepare() в $db но никогда не выполняйте оператор. Вам нужно выполнить оператор, вызвав $stmt->execute() после объявления $stmt .

Ваш код должен выглядеть примерно так:

 if(isset($_POST['submit'])){ $username = $_POST['username']; $password = $_POST['password']; if($user->login($username,$password)){ $_SESSION['username'] = $username; try{ $stmt = $db->prepare('UPDATE admin SET login_date = now() WHERE x = y'); $stmt->execute(); } catch (PDOExeception $e){ $error[] = $e->getMessage(); } header('Location: index.php'); exit; } else { $error[] = '<div class="alert alert-danger fade in text-center"> <a href="#" class="close" data-dismiss="alert">&times;</a> <strong>Error!</strong> Wrong username or password or your account has not been activated. </div>'; } } 
  if(!isset($_SESSION)){ session_start(); } $username = $_SESSION['username']; require_once('connection.php'); $sql = "INSERT INTO [test].[dbo].[user_log] ([username] ,[login_date] ) VALUES ('$_SESSION[username]' ,GETDATE() )"; $result = sqlsrv_query($conn,$sql); if ($result === false ) { echo "Error in query "; exit(); } 

У меня была такая же проблема, после чего я решил, используя простые коды, как те