0

私はphpでログインモジュールに取り組んでおり、IDを生成する問題に直面しています。

登録部分では、ユーザーごとに一意の ID を生成する必要があります。データベースの最後の ID を 1 増やすことでこの ID を生成できると思っていましたが、うまくいかないようです。

これが私のコードです:

    $user = $_POST['post_username'];
    $pass = $_POST['post_password'];

    function generateID(){

    $aux = mysql_query("SELECT usr_id FROM users");

    $i = 0;

    $resulArray = mysql_fetch_row($aux) or die("Error fetching!");
    $n = mysql_num_rows($aux);

    $b = $resulArray[$i];
    $c = $b;
    for($i = 0; $i < $n; $i = $i +1){
        $b = $resulArray[$i];
        if($b >= $c) $c = $b;
    }

    return $c + 1;}

私のMySQL構造は次のとおりです。

username -> String
password -> String
usr_id   -> int
4

1 に答える 1

5

これをしないでください。信頼性が低く、競合状態に対処できません。自動インクリメントの主キーを使用するだけです。

CREATE TABLE users
   id unsigned int auto_increment primary key,
   ...
);

それから

INSERT INTO users (id, ....) VALUES (null, ...)

$userID = mysql_last_insert_id();

これは本質的に信頼性が高く、競合状態を処理し、このテーブルの一意の ID を保証します。カスタム検証は必要ありません。id フィールドを自動インクリメントし、MySQL に id を処理させるだけです。

于 2013-05-27T20:31:25.783 に答える