2016-05-29 121 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

相關問題