Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak sugerujesz unikalne nazwy użytkownika w PHP?

Podejrzewam, że pytanie jest podstawowe, więc podam prosty przykład:

<?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){
        // ...
    }
}

Edytuj:

Jedynym sposobem na dostarczenie nieskończonej listy dostępnych nazw jest użycie bardzo prostej zasady, takiej jak dodanie kolejnego numeru. W takim przypadku możesz spróbować czegoś takiego:

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

... a potem:

$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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dostęp do bazy danych GWT bez RPC

  2. mysql BŁĄD 1426 (42000):Zbyt duża precyzja 14 określona dla kolumny 'czas'. Maksymalna mama ma 6 lat

  3. Mysql Zliczanie kolejnych pasujących wierszy

  4. Błąd importowania Pythona MySQLdb — Mac 10.6

  5. Wersja bazy danych / kontrola zmian dla danych, a nie schematu?