0

独自の認証システムを構築しています。現在、次の方法で各ログインタイムスタンプをログに記録するようにデータベースを設定しています。

$query = 'UPDATE `users` SET login_log = concat(login_log, ?) WHERE userKey = ? LIMIT 1 ';
$vars = array(time().',', $this->userKey);  
$QH = $this->DBH->prepare($query);
$QH->execute($vars);

フィールドconcat()にデータを記録するために使用するのは悪いですか? これを別の方法で行う必要がありますか? この方法で問題が発生する可能性はありますか?longtext

4

1 に答える 1

0

私が手に負えないと考えることができる唯一のことは、login_logのフィールドを1つだけ持つ必要があるビジネスがない限り、特にその後の時間部分に対して制約を実行する場合は、連結する理由がないということです...必要なtime()コンポーネントを取得する前に、他のすべてのログテキスト(ここでは他の時間)を解析する必要があります。

データを正規化し、自動インクリメントのint PKを追加し、その後にuserKeyフィールドとlogin_LogDateフィールドを追加する方がはるかに簡単です。ログインするたびに、ユーザーテーブルにユーザー名と現在時刻を挿入できます。そうすれば、分割するよりもはるかに簡単に、最小、最大、上位N番目のログインなどを簡単に見つけることができます。

于 2011-03-30T17:59:55.153 に答える