Mysql
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. उपयोगकर्ता mysql कार्यक्षेत्र में डेटाबेस नहीं देख सकता है

  2. फ़ील्ड मानों के आधार पर पंक्तियों की श्रेणी का चयन कैसे करें - MySQL

  3. MySQL का MyISAM इंजन विदेशी कुंजियों का समर्थन क्यों नहीं करता है?

  4. सीमित संख्या में पंक्तियाँ लाने के लिए MySQL GROUP_CONCAT को कैसे हैक करें?

  5. MYSQL में पर्सेंटाइल/रैंक का कुशल असाइनमेंट