我需要生成一个随机的字母数字字符串,该字符串对于phpmyadmin中某个表中特定列中的所有值都是唯一的。另外,我需要它长20个字符。有许多这样的问题已经发布但我没有看到任何需要phpmyadmin中的列所特有的字符串。
那我怎么在php中做这个呢?
答案 0 :(得分:5)
这样的事情:
function isToken($token)
{
if (isset($token) && $token) {
//verification values in BD
$query = "SELECT id FROM table WHERE token='$token'";
$sql = mysql_query($query);
if (mysql_num_rows($sql) > 0) {
return true;
} else {
return false;
}
} else {
return false;
}
}
function generateUniqueToken($number)
{
$arr = array('a', 'b', 'c', 'd', 'e', 'f',
'g', 'h', 'i', 'j', 'k', 'l',
'm', 'n', 'o', 'p', 'r', 's',
't', 'u', 'v', 'x', 'y', 'z',
'A', 'B', 'C', 'D', 'E', 'F',
'G', 'H', 'I', 'J', 'K', 'L',
'M', 'N', 'O', 'P', 'R', 'S',
'T', 'U', 'V', 'X', 'Y', 'Z',
'1', '2', '3', '4', '5', '6',
'7', '8', '9', '0');
$token = "";
for ($i = 0; $i < $number; $i++) {
$index = rand(0, count($arr) - 1);
$token .= $arr[$index];
}
if (isToken($token)) {
return generateUniqueToken($number);
} else {
return $token;
}
}
$uniqueToken = generateUniqueToken(20);
答案 1 :(得分:1)
无法自动在MySQL表中获取唯一随机数。您必须在PHP中创建一个唯一的随机文本,并在MySQL表中找到它,如果存在则再次生成它。
protected function generateToken($length=6){
return substr(str_shuffle('abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ1234567890'),rand(0,60-$length),$length);
}
答案 2 :(得分:1)
我想我可以让它变得非常简单:
echo md5(time());