मुझे संदेह है कि प्रश्न एक आधार है इसलिए मैं एक सरल उदाहरण प्रदान करूंगा:
<?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--;
}
}