您好,我有一个函数,将生成一个正常的随机字符串。我想要做的是将该字符串存储为我的数据库中的主键。问题是我首先需要确保字符串在存储之前是唯一的。这是我到目前为止所拥有的。我确定我需要一个循环,直到结果=< 0但不知道如何去做任何帮助都会很有用。我也愿意接受更好的解决方案,因为我认为这可能是一个缓慢的解决方案。
//generate random slug
function genRandomString($length=10,$characters = '0123456789abcdefghijklmnopqrstuvwxyz',$string = '') {
for ($p = 0; $p < $length; $p++) {
$string .= $characters[mt_rand(0, strlen($characters))];
}
return $string; }
//store slug into variable
$slug = genRandomString('5');
//select the slug that is equal to our slug
$qry = "SELECT `slug` FROM `drink_data` WHERE `slug` = '$slug'";
$result = mysql_query($qry);
//if reslut make a new slug (this dosen't recheck the new slug which is a problem)
if($result >= 0){
$slug = genRandomString('5');
}
答案 0 :(得分:2)
首先,使用$result >= 0
代替mysql_num_rows($result) >= 0)
。接下来,您可能希望暂时包装整个事情:
do{
$slug = genRandomString(5);
//select the slug that is equal to our slug
$qry = "SELECT `slug` FROM `drink_data` WHERE `slug` = '$slug'";
$result = mysql_query($qry);
}while(mysql_num_rows($result) > 0);
这将继续产生新的slu((并检查它们的唯一性),直到它找到某些东西。您可能希望在饱和时添加代码以保释(5个数字不会那么长,您将快速填满并且此循环将以指数级速度运行)。