我有皮毛,我只是想不通。
我希望我的代码:
我尝试了以下代码,在Stackoverflow的类似问题中发现了该代码,但我无法弄清楚:
$key = true;
while($key){
$unique_number_new = rand(1000,9999);
$result = mysql_query("SELECT * FROM brugere WHERE medlemsnummer = $unique_number_new");
if(mysql_num_rows($result) > 0) {
$key = false;
// Allready exists
} else {
$key = true;
// Create in database
}
echo "Code done! - " . $unique_number_new;
}
问题是,它给了我多个数字(请参阅https://www.dance4fun.dk/test_folder/number_test.php)
如何创建执行上述4个步骤的代码?
希望你能帮我这个忙!
答案 0 :(得分:1)
您的代码无法正常工作的原因:
这是一种实现列出的目标的方法:
do {
$unique_num = mt_rand(1000,9999);
// NOTE: changed mysql_query to use mysqli! (prepared statement not required here)
$exists = mysqli_fetch_row(
mysqli_query(
$connection,
"SELECT COUNT(*) FROM brugere WHERE medlemsnummer = $unique_num"
)
)[0];// [0] means grab column result
} while($exists);
echo "Code done! - " . $unique_num;
这将始终运行一次代码(执行),如果在数据库中找到了随机数,则将重复执行一次。一旦在数据库中找不到该变量,则在while循环结束后,您将在变量中使用一个随机数作为您的想法。
对于这些事情,添加故障保护是一个好主意:
$c = 0;
do {
$c++;
/// other code
} while ($exists and $c < 1000);