タイムスタンプ型の列 last_login を持つユーザー テーブルがあります。構造:
CREATE TABLE IF NOT EXISTS `User` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(80) NOT NULL,
`username` varchar(80) NOT NULL,
`password` varchar(80) NOT NULL,
`facebook_login` varchar(3) NOT NULL DEFAULT 'no',
`facebook_id` varchar(50) NOT NULL,
`last_login` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ;
ユーザーが現在のタイムスタンプでログインしたときに更新したい。そうです:
$sql = "Update User set last_login = ".time()."
Where id = :id";
$stmt = $db->prepare($sql);
$stmt->bindParam("id", $user->id);
$stmt->execute();
mysql ログ ファイルで、このクエリが実行されていることがわかります。
Update User set last_login = 1381949425 Where id = '1'
しかし、どういうわけか、「影響を受ける行はありません」と表示されます。これはどのように可能ですか?テーブルには 1 の ID を持つユーザーがいます...