Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana Anda menyarankan nama pengguna unik untuk pengguna di PHP?

Saya menduga pertanyaannya adalah pertanyaan dasar jadi saya akan memberikan contoh sederhana:

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

Sunting:

Satu-satunya cara untuk memberikan daftar tak terbatas dari nama yang tersedia adalah dengan menggunakan aturan yang sangat sederhana seperti menambahkan nomor berurutan. Dalam kasus seperti itu, Anda dapat mencoba sesuatu seperti ini:

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

... dan kemudian:

$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. MySQL – Berbagai Metode untuk Mengetahui Pengguna Saat Ini

  2. Buat id kenaikan otomatis MySQL (kembali) mulai dari 1

  3. Bagaimana cara menonaktifkan caching SQLAlchemy?

  4. Pelengkapan otomatis di klien baris perintah MySQL

  5. Bagaimana Mendapatkan Ukuran Sebenarnya dari Database MySQL?