sql >> データベース >  >> RDS >> Mysql

PHPのユーザーに一意のユーザー名をどのように提案しますか?

    質問は基本的なものだと思うので、簡単な例を示します。

    <?php
    
    // Untested code and only one of the many possible ideas
    $suggestions = array(
        'foobar' => TRUE,
        'foo1974' => TRUE,
        'foo37' => TRUE,
        'drfoo' => TRUE,
        'mrfoo' => TRUE,
    );
    
    
    $params = $placeholders = array();
    foreach(array_keys($suggestions) as $position => $username){
        $params['u' . $position] = $username;
        $placeholders[] = ':u' . $position;
    }
    $sql = 'SELECT username
        FROM user
        WHERE username IN (' . implode(', ', $placeholders) . ')';
    
    $res = $conn->prepare($sql);
    $res->execute($params);
    while( $row = $res->fetch(PDO::FETCH_ASSOC) ){
        $suggestions[ $row['username'] ] = FALSE;
    }
    
    
    foreach($suggestions as $username => $available){
        if($available){
            // ...
        }
    }
    

    編集:

    使用可能な名前の無限のリストを提供する唯一の方法は、連続番号を追加するなどの非常に単純なルールを使用することです。このような場合は、次のように試すことができます:

    SELECT username
    FROM user
    WHERE username REGEXP '^foo[0-9]+'
    

    ...そして:

    $username = 'foo';
    
    $suggestions = array();
    $count = 0;
    $names_left = 5;
    while($names_left>0){
        $count++;
    
        if( !in_array($username . $count, $names_taken) ){
            $suggestions[] = $username . $count;
            $names_left--;
        }
    }
    


    1. ストアド関数またはプロシージャを使用せずに、C#ODP.NETのOracle参照カーソルをReturnValueパラメータとして使用するにはどうすればよいですか?

    2. HBaseテーブルをmysqlにエクスポートする

    3. SQLServerとMYSQL間のレプリケーション

    4. SQLServerの大きなテーブルにNOTNULL列を追加するにはどうすればよいですか?