此脚本基本上会检查所选的随机数是否已作为ID存在,如果不存在,则会将其添加到数据库中。
如果找到存在的那个,它应该重复查询,直到它返回0结果。
这是脚本:
$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,我将如何重复此代码?
答案 0 :(得分:2)
使用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
}
}
答案 1 :(得分:0)
要回答您的问题,而不是查看代码或其他任何内容的效率,那么您需要做的就是将代码放入一个函数中,然后调用自身。这被称为递归函数。
所以,你会这样做:
public function findId() {
//Your code for checking if the ID is used
if () {
//Your success code
return $id
} else {
return findId();
}
}
这应该继续调用函数并执行代码,直到if语句变为true。