MySQLi创建随机字符串,但检查它不存在

时间:2013-09-03 21:00:16

标签: php if-statement mysqli

下面是我编写的用于创建随机字符串的代码。效果很好。它还会检查以确保生成的字符串不存在,如果存在,则会生成另一个字符串。然而,我还没有找到一种方法来生成代码,如果已存在的代码被检查,看看是否存在。我最好做一个elseif声明吗?

PHP

<?PHP
require_once('dbConfig.php');
$randomstring = '';
$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';

for ($i = 0; $i < 12; $i++) {
    $randomString .= $characters[rand(0, strlen($characters) - 1)];
}
//$generatedId = "SPI-E7HN2SBIIF5W";
$generatedId = 'SPI-'.$randomString;

//Prepare select query
$statement = $db->prepare("SELECT client_unique_id FROM clients WHERE client_unique_id = ? LIMIT 1");

//Determine variable and then bind that variable to a parameter for the select query ?
$id = $generatedId;
$statement->bind_param('s', $id);

//Execute and store result so that num_rows returns a value and not a 0
$statement->execute();
$statement->store_result();

//Bind result to a variable for easy management afterwards
$statement->bind_result($clientId);

// Generate a random ID for the user if the previously generated one already exists
if($statement->num_rows > 0){
    $randomstring = '';
    $characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';

    for ($i = 0; $i < 0; $i++) {
        $randomString .= $characters[rand(0, strlen($characters) - 1)];
    }
    $generatedId = 'SPI-'.$randomString;
    echo $generatedId;
} else {
    // If there's no issue with what's been created, echo it out :)
    echo $generatedId;
}


?>

感谢任何帮助:)

1 个答案:

答案 0 :(得分:1)

试试这个。

// initialize a variable to hold the last generated id, 
$generatedId = '';
// and another to hold the returned client_unique_id, 
$clientId = '';

setup your prepared statement
bind the parameter, 
$statement->bind_param('s', $id)
do
{
   generate a new Id. (Code for generating random id goes here).
   $generatedId = '...';
   // bind the generated id to the prepared statement. 
   $id = $generatedId
   // execute the prepared statement, 
   $statement->execute()
   // fetch the results into $clientId
   $statement->bind_result($res);
   while($statement->fetch()) {
       $clientId = $res;
   }
} while ($clientId != '');

$statement->close();
// echo the last generated Id
echo $generatedId;

欢呼声,

威廉