$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."')");我想要一个循环来生成一个新的字符串,以防它已经存在于数据库中。谢谢。
发布于 2012-07-26 17:06:13
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-26 17:04:51
看起来您正在尝试生成随机字符串并将其插入到数据库中,但有一个限制,即不能有重复项。
为了确保不会有重复,最好的方法是对该列执行create a UNIQUE index。然后,数据库将确保永远不会有重复的值。
要插入新值,您可以在插入之前查询数据库,查看特定字符串是否已存在。或者,您可以继续尝试插入并查看它是否有效-唯一约束将阻止插入任何重复项。
发布于 2012-07-26 17:05:50
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;
}
}https://stackoverflow.com/questions/11665819
复制相似问题