2012-07-05 3 views
0

Я пытаюсь вставить текущую дату/время в базу данных при последнем входе в систему. По какой-то причине это не работает.
Другие скрипты вставки, работающие на одной странице, хорошо работают, и соединение в порядке.
Я использую тот же синтаксис, чтобы вставлять другие вещи по всему сайту, поэтому я не понимаю, что не так.
Я могу гарантировать, что часть else выполняется при вводе пароля.PDO - код вставки (INSERT INTO ...) не работает

Вот часть кода, о которой я говорю.

if(!$pwVer){ 
    // code to execute if the password is incorrect. 
} else { 

    $dateT = date("Y-m-d H:i:s"); 

    $up_date = $con->prepare("INSERT INTO tbl_user_test (user_last_login) VALUES (:l_login)"); 
    $up_date->bindParam(':l_login', $dateT); 

    $up_date->execute(); 

    validateUser($userid); //sets the session data for this user 


    header("Location: cart.php"); 
    $con = null; 
    die(); 
} 

Некоторый фон:

  • $ pwVer возвращает `true`, если пароль правильный.
  • как `tbl_user_test`, так и` user_last_login` написаны точно так, как они находятся в базе данных.

Заранее благодарен!

+1

Имеет ли таблица 'tbl_user_test' только столбец' user_last_login'? Если вы не вставляете какую-либо информацию, такую ​​как 'user_id', какая доза эта таблица притворяется? – xdazz

+1

Попробуйте поместить 'var_dump ($ up_date-> errorInfo());' после строки '$ up_date-> execute();' и сообщить нам, что он говорит. –

+0

@xdazz спасибо! LOL Я совсем забыл, что это должно быть специфическим для пользователя ... Я должен был добавить часть 'WHERE'! – Asaf

ответ

2

Я пытаюсь вставить текущую дату/время в базе данных, как в последний раз пользователь вошел в систему. По какой-то причине это не работает.

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

Кроме того, нет необходимости сами строить текущую дату; вы можете использовать SQL's NOW().

<?php 
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
try { 
    $up_date = $con->prepare("INSERT INTO tbl_user_test (user_last_login) VALUES (NOW());"); 
    $up_date->execute(); 
} 
catch(Exception $e) { 
    echo $e; exit; 
} 

header("Location: cart.php"); 
$con = null; 
die(); 
+0

Спасибо! Я решил свою проблему благодаря вашему ответу :) Я думаю, проблема в том, что я не определил, какую строку я действительно хочу обновить. Поэтому я использовал ваш синтаксис кода и изменил sql на предложение 'UPDATE' +' WHERE'. – Asaf

2

Вы пытались выполнить NOW() для текущего времени?

2

После проверки этой

$up_date->bindParam(':l_login', $dateT, PDO::PARAM_STR);