我一直在嘗試爲驗證腳本更改一些代碼,以便它不包含goto,因爲我想在虛擬主機上運行我的腳本,但不幸的是,它們中的大多數並不真正擁有5.3或更高版本。用函數代替goto,爲什麼這不起作用?
該代碼旨在使用由rand生成的值作爲唯一驗證號。如果它發現它已經存在於數據庫中,它將會根據需要多次追加1,直到它找到一個可用的數字。非常簡單。我知道這是一個MySQL查詢的可怕做法,但它實際上只是一個簡單的練習腳本。
的代碼如下:
function gen_val($val)
{
$query = mysql_query("SELECT val_id FROM users_tmp WHERE val_id=$val");
$row = mysql_fetch_array($query);
if ($row[0]==$val) {
gen_val($val+1);
} else {
return $val;
}
}
$val_x=gen_val(rand());
這將返回一個值「0」,如果值在DB已經存在。如果沒有類似的值,函數可以正常工作,所以我認爲函數遞歸存在問題。我不認爲我真的知道如何正確使用它,所以請繼續教育我。
乾杯。
Asher
隨着數據庫的增長,只是FYI,這個特定的功能會變得越來越慢。 MySQL內置了獨特的id功能,這是不必要的。 – 2011-05-08 06:09:07