0
$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

4 回答 4

1

看起来您正在尝试生成随机字符串并将它们插入数据库,但有不能重复的限制。

为确保不能重复,最好的方法是在该列上创建一个唯一索引。然后数据库将确保永远不会有重复的值。

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

于 2012-07-26T09:04:51.207 回答
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;
   }
}
于 2012-07-26T09:05:50.170 回答
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."')");

它未经测试,但应该可以工作。

于 2012-07-26T09:06:13.353 回答
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."')");
于 2012-07-26T09:08:00.653 回答