正如标题所述,我想知道如何插入用php生成的随机数和从另一个表中选择的行。例如:
<?php
$randomid = (rand(1,1000000));
$sql = "INSERT INTO example2 (randomid, userid, name)
VALUES ('$randomid')
SELECT userid, name
FROM example1
WHERE name='Donald' "
$mysqli->query($sql);
?>
我不确定该怎么做。我必须将其分为插入和更新查询吗?
答案 0 :(得分:0)
SELECT
可用于输出消息/静态值,如this example
SELECT CASE
WHEN userid<100 THEN 'less than 100'
WHEN userid<200 THEN 'less than 200'
ELSE 'greater than 200'
END AS message, userid
FROM mytable
所以在你的例子中你可以做同样的事情
$randomid = (rand(1,1000000)); // <--- imagine 25 was returned
$sql = "INSERT INTO example2 (randomid, userid, name)
SELECT ".$randomid.", userid, name
FROM example1
WHERE name='Donald' " // <--- you select now looks like 'SELECT 25, userid, name'
然而有一个缺点,因为这会给每个条目name
唐纳德相同的值,所以如果你有多个唐纳德,它有点打败了随机值的目的,除非你打算限制插入一个在给你的PHP rand
函数重新计算
更好的方法是使用MySQL自己的RAND
function
返回0&lt; = v&lt;范围内的随机浮点值v。 1.0。
因为这个函数返回一个十进制/浮点值,这对于一个整数键来说并不是很理想,我们希望通过多次使用它来使它成为一个inetger并使用FLOOR
来使用这个
FLOOR(RAND()*1000000) AS randomid
这将得到0到1之间的值,我们将它乘以1000000,然后使用FLOOR
将其向下舍入到最接近的完整数字,与PHP代码不同,为每个条目创建一个新数字。所以15个唐纳德将有15个不同的随机ID。你仍然有可能获得相同的数字,但这是随机数的性质