如果我需要将表值替换为包含随机数的500行。问题是如何循环得到ID 1-500,这是可能的吗?
<?php
$first = sprintf("%06d", mt_rand(1, 999999));
$second = sprintf("%06d", mt_rand(1, 999999));
$third = sprintf("%06d", mt_rand(1, 999999));
for($x = 1; $x <= 500; $x++) {
$sql = "UPDATE `random_num` SET
`rand_1` = '$first',
`rand_2` = '$second',
`rand_3` = '$third'
WHERE id = '$x';";
}
?>
您的代码出了什么问题?只需在for..
循环内移动随机数生成,u就完成了
<?php
function s_random()
{
return sprintf("%06d", mt_rand(1, 999999));
}
for($x = 1; $x <= 500; $x++) {
$sql = "UPDATE `random_num` SET
`rand_1` = '".s_random()."',
`rand_2` = '".s_random()."',
`rand_3` = '".s_random()."'
WHERE id = '".$x."'";
}
如果你这样做,将有500个对数据库的调用,每行都将有不同的随机数
如果您希望每行中都有相同的随机数,只需使用in
关键字
"UPDATE `random_num` SET
`rand_1` = '".s_random()."',
`rand_2` = '".s_random()."',
`rand_3` = '".s_random()."'
WHERE id IN ('".implode(',',range(1,500))."'";
您也可以在一次中创建查询
<?php
function s_random()
{
return sprintf("%06d", mt_rand(1, 999999));
}
$sql = "INSERT into random_num (id,rand_1,rand_2,rand_3) VALUES";
$val = [];
$i = 1; //begin ID
do{
$val[] = "($i, ".s_random().",".s_random().",".s_random().")";
$i++;
}while ($i < 500); //end ID
echo '<pre>';
$sql .= implode(',',$val);
$sql .= ' ON DUPLICATE KEY UPDATE rand_1 = VALUES(rand_1), rand_2 = VALUES(rand_2), rand_3 = VALUES(rand_3)';
echo ($sql);