Php 重复ID检查,直到找到可用的ID?
这个脚本主要检查所选的随机数是否已经作为ID存在,如果没有,它将把它添加到数据库中 如果它找到一个存在的查询,它应该重复该查询,直到返回结果为0为止 以下是脚本:Php 重复ID检查,直到找到可用的ID?,php,loops,mysqli,Php,Loops,Mysqli,这个脚本主要检查所选的随机数是否已经作为ID存在,如果没有,它将把它添加到数据库中 如果它找到一个存在的查询,它应该重复该查询,直到返回结果为0为止 以下是脚本: $venues_select = unserialize($_COOKIE['album_array']); foreach ($venues_select as $id) { $getdetails = mysqli_fetch_assoc(mysqli_query($conn, "SELECT cat_name,
$venues_select = unserialize($_COOKIE['album_array']);
foreach ($venues_select as $id) {
$getdetails = mysqli_fetch_assoc(mysqli_query($conn, "SELECT cat_name, cat_city, cat_down_lvl FROM new_categories WHERE cat_id = '$id'"));
$det_cat_name = $getdetails['cat_name'];
$det_cat_city = $getdetails['cat_city'];
$det_cat_id = $getdetails['cat_down_lvl'];
$length = 25;
$randomString = substr(str_shuffle("0123456789"), 0, $length);
$sqla = "SELECT * FROM `new_albums` WHERE `album_ref` = '$randomString'";
$resulta = $conn->query($sqla);
if (!$resulta->num_rows > 0) {
mysqli_query($conn, "INSERT INTO new_albums (album_id,album_name,venue_name,city_name,cat_id,album_ref,date_added)
VALUES ('','$album_name','$det_cat_name','$det_cat_city','$det_cat_id','$randomString','$todays_date')");
} else {
//// CHECK AGAIN
}
}
如何重复此代码直到找到可用ID?使用while循环:
$search = true; // allow the loop to begin
while($search == true) {
$randomString = substr(str_shuffle("0123456789"), 0, $length);
$sqla = "SELECT * FROM `new_albums` WHERE `album_ref` = '$randomString'";
$resulta = $conn->query($sqla);
if (!$resulta->num_rows > 0) {
mysqli_query($conn,"INSERT INTO new_albums (album_id,album_name,venue_name,city_name,cat_id,album_ref,date_added)
VALUES ('','$album_name','$det_cat_name','$det_cat_city','$det_cat_id','$randomString','$todays_date')");
$search = false; // change the flag so the while loop will not repeat
}
}
为了回答您的问题,而不考虑代码的效率或任何事情,您所需要做的就是将代码放入一个函数中,然后调用它自己。这被称为递归函数 所以,你可以这样做:
public function findId() {
//Your code for checking if the ID is used
if () {
//Your success code
return $id
} else {
return findId();
}
}
这将继续调用函数并执行代码,直到if语句变为true。您希望总共插入多少条记录?这个脚本位于
Foreach
中,因此它可能很多…您可以将代码与Foreach部分一起发布吗?我已经更新了我的问题,将其包括在内。这不是@fislerdata的解决方案吗回答您的问题???@Snappysites很乐意提供帮助。