1

ユーザーをデータベースに書き込んでいますが、ページがタイムアウトした場合に「中断したか」を開始できるようにしたいと考えています。

私の現在のコードはここにあります

 $sql = "SELECT * 
            FROM  `user` 
            WHERE  `setting` LIKE CONVERT( _utf8 '1 %'
            USING latin1 ) 
            COLLATE latin1_swedish_ci";


     while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

        //add a user to seperate database


}

ご覧のとおり非常に単純ですが、ページが失敗した場合、自分がどこにいたかを知る方法がなく、ユーザーが 2 回追加されます。何をすべきか?

4

5 に答える 5

0

他のものに加えて、代わりにuserテーブルにブール列を作成し、デフォルト値を 0 にします。ループ ブロックでユーザー行を 1 に更新します。そうすれば、中断した場所がわかります。ANDそして、このようにSQLステートメントに句を追加します

$sql = "SELECT * 
        FROM  `user` 
        WHERE  `setting` LIKE CONVERT( _utf8 '1 %'
        USING latin1 ) 
        AND `carried`= 0
        COLLATE latin1_swedish_ci";


 while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

    //add a user to seperate database

    mysql_query(UPDATE `user` SET `carried`=1 WHERE `id` = $row['id'])

}

完了したら、列を削除できcarriedます。

于 2013-05-27T03:03:46.267 に答える
0

このINSERTステートメントを使用して新しいユーザーを追加し、適切なインデックスを配置する場合、ユーザーがデータベースに 2 回追加されないようにするには、これだけで十分です。

詳しくは:

于 2013-05-27T02:36:31.163 に答える
0

一意のインデックスと組み合わせてトランザクションを使用して、スクリプトを分離できます (おそらくそうするべきです) 。トランザクションを正しく構成すれば、自分がどこにいたかを正確に知ることができます。

于 2013-05-27T02:56:51.823 に答える