2016-05-29 123 views
1

我创建了一个查找特定列中所有行(记录)的函数, 生成一个随机数,然后检查它是否已经存在与该列,如果生成的随机数存在重新启动功能(递归) 如果它不存在然后插入它作为新的。INSERT if does not exist in database

$verifs = mysqli_query($conlink, 'SELECT verif FROM memebers'); 
$records = array(); 
while($record = mysqli_fetch_array($verifs,MYSQLI_NUM)) { 
    $records[] = $record[0]; 
} 
function randomize(){ 
    $rand= rand(1,5); 
    if(in_array($rand, $GLOBALS['records'])){ 
     randomize(); 
    }else{ 
     return $rand; 
    } 
} 
mysqli_query($conlink, "INSERT INTO `memebers`(`verif`) VALUES (".randomize().")"); 

我预计一些必须被添加每次我刷新我的PHP页面
,它是这样,但是当我到3分或4的记录,刷新页面不添加任何!所以return语句必须防止函数递归。 我是否有任何问题,我的逻辑 谢谢

+0

您确定$记录存在于$ GLOBALS?尝试做一个'print_r($ GLOBALS ['records'])'让我们知道你得到了什么输出。 – Webeng

+0

我发布了一个可能有用的答案,如果确实如此,请告诉我。 – Webeng

+0

记录实际上是存在的,但一开始是空的,并开始有更多的价值刷新页面,尝试'in_array($兰特,全球$记录)'但我有一个语法错误意想不到的全球,我认为$ GLOBALS正在预计 –

回答

1

在我看来,你没有正确使用回调函数。如果你不知道,当你在一个函数中使用函数时,你实际上必须在参数中传递该函数。那些在该参数的函数的函数称为回调函数,你可以在下面的帖子阅读更多关于他们:What is a callback function and how do I use it with OOP

话,我会改变你的randomize功能,下面的代码:

function randomize($callbackRandomize){ 
    $rand= rand(1,5); 
    if(in_array($rand, $GLOBALS['records'])){ 
     return $callbackRandomize($callbackRandomize); 
    }else{ 
     return $rand; 
    } 
} 

并且还将您的最后一行代码更改为:

mysqli_query($conlink, "INSERT INTO `memebers`(`verif`) VALUES (".randomize('randomize').")"); 

让我知道这是否适合您。

+0

干净和完美 –

+1

很高兴我可以帮助:) – Webeng

相关问题