我有一个我无法弄清楚的困难。
我希望我的代码:
- 创建一个随机数
- 测试数据库中是否存在
- 如果存在,则创建一个新的随机数并再次执行数字 2。
- 如果不存在,请在数据库中创建它。
我尝试了以下代码,我在 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 个步骤的代码?
希望你能帮我解决这个问题!
最佳答案
您的代码不起作用的原因:
- 您将“true”设置为未找到结果,因此如果没有找到任何内容,它将继续循环。
- 无论如何,您都会收到显示代码的 echo 。
这是实现您列出的目标的一种方法:
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;
这将始终运行代码一次 (do),并且如果在数据库中找到随机数,则将重复运行代码。一旦在数据库中找不到它,您就会在变量中获得一个随机数,以便在 while 循环结束后用作您的突发奇想。
对于这些事情,添加故障保护是个好主意:
$c = 0;
do {
$c++;
/// other code
} while ($exists and $c < 1000);
关于php - 测试数据库中是否存在数字,如果存在则创建新数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51081048/