Ich vermute, die Frage ist eine Basisfrage, also gebe ich ein einfaches Beispiel:
<?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){
// ...
}
}
Bearbeiten:
Die einzige Möglichkeit, eine unendliche Liste verfügbarer Namen bereitzustellen, besteht darin, eine sehr einfache Regel zu verwenden, z. B. das Hinzufügen einer fortlaufenden Nummer. In einem solchen Fall können Sie Folgendes versuchen:
SELECT username
FROM user
WHERE username REGEXP '^foo[0-9]+'
... und dann:
$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--;
}
}