循环随机字符串

时间:2012-07-26 09:01:12

标签: php mysql loops random

$new_random_string = substr(str_shuffle('0123456789'), 0, 2);

$strings = mysql_query("SELECT `string` FROM `table`");
while ($string = mysql_fetch_row($strings)) {

if ($new_random_string == $string[0]) 

// generate new random string

}

mysql_query("INSERT INTO `table` (`string`) VALUES ('".$new_random_string."')");

我想要一个循环来生成一个新字符串,以防它已经存在于数据库中。 感谢。

4 个答案:

答案 0 :(得分:1)

看起来您正在尝试生成随机字符串并将其插入到数据库中,但限制条件是不能重复。

为了确保不会出现重复,最佳方法是{C> {}。然后数据库将确保永远不会有重复的值。

要插入新值,您可以查询数据库,以便在插入之前查看您的特定字符串是否已存在。或者您可以继续尝试插入并查看它是否有效 - UNIQUE约束将阻止插入任何重复项。

答案 1 :(得分:0)

while(1)
{
   // generate new random string
   if(mysql_result(mysql_query("SELECT COUNT(*) FROM `table` WHERE `string` ".$new_random_string), 0) == 0){
       mysql_query("INSERT INTO `table` (`string`) VALUES ('".$new_random_string."')");
       break;
   }
}

答案 2 :(得分:0)

function gen_string() {
   return substr(str_shuffle('0123456789'), 0, 2);
}

do {
$rand = gen_string();
$query = mysql_query("SELECT count(*) as rows FROM `table` where `string` ='".$rand ."'; ");

$row = mysql_fetch_row($query);

} while ($row['rows']>0);

mysql_query("INSERT INTO `table` (`string`) VALUES ('".$rand."')");

它没有经过测试,但应该可以使用。

答案 3 :(得分:0)

do{

    $new_random_string = substr(str_shuffle('0123456789'), 0, 2);
    $string = mysql_query("SELECT `string` FROM `table` WHERE `string` = $new_random_string");
    $string = mysql_fetch_row($strings)

}while($new_random_string == $string[0]);

mysql_query("INSERT INTO `table` (`string`) VALUES ('".$new_random_string."')");