PHP替换多个MYSQL表值



如果我需要将表值替换为包含随机数的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);

最新更新