用mysql插入随机数

问题描述:

我对mysql主要有一个疑问。我有以下几点:用mysql插入随机数

mysql_query("INSERT INTO {$game}_ships (location,login_id 
     ) values(
    '250','44')"); 

我想打的位置,从2随机数到300

等等我的表结构包括位置和登录ID列,我不需要提其他列,因为它们是静态的,不会更改。上述内容是为了使船看起来像它在系统中移动。

location int(4) 

任何人都可以帮忙吗?

+1

参见:http://*.com/questions/984396/how-to-get-mysql-random-integer-range - '(FLOOR(2 + RAND()* 300))' – 2012-02-03 21:19:11

+0

可能[MySQL获取两个值之间的随机值]的副本(http://*.com/questions/6550155/mysql-get-a-random-value-between-two-values) – Mchl 2012-02-03 21:21:07

+0

这将生成一个介于2和302.你必须从乘法中减去最大值的最小值,就像我在我的答案中发布的那样。 – rcdmk 2012-02-03 21:22:33

mysql_query("INSERT INTO {$game}_ships (location,login_id 
     ) values(
    FLOOR(RAND() * 298 + 2),'44')"); 

参见:http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_rand

+0

以上是给我一个0位置。 – user631756 2012-02-03 21:24:54

+1

然后,您的列数据类型可能有问题。你可以编辑你的问题向我们展示表格结构吗? – Mchl 2012-02-03 21:27:49

+0

我已更新问题并再次进行测试。结果是0.我有一个位置0的问题,它不存在。大声笑 – user631756 2012-02-03 21:45:48

您可以使用这样的事情:

INSERT INTO TABLE_NAME(rand_col) VALUES(FLOOR($MIN_VAL + (RAND() * ($MAX_VAL - $MIN_VAL)))); 

哪里MIN_VAL是你的下数(2)和MAX_VAL是你的高数(300)

+0

它不是一个随机列,我试图随机化一个插入,使它看起来像一艘船在四处移动。 – user631756 2012-02-03 21:33:52

+0

My例如,这是一个插入,MIN_VAL和MAX_VAL只是占位符:'mysql_query(“INSERT INTO {$ game} _ships(location,login_id )values( FLOOR(2 +(RAND()*(300 - 2 ))),'44')“);'这和你的答案一样 – rcdmk 2012-02-04 20:57:42

你可以用PHP的rand来代替吗?

mt_rand(2,300) 
+0

我的猜测都回答随机没有工作,因为我仍然得到一个0系统 – user631756 2012-02-03 21:48:45

+0

你可以输出mt_rand的结果来确保它工作? – 2012-02-03 21:54:20

+0

mt_rand的作品,但它并没有在数据库中插入一个有效的整数,它恢复到默认值,即0。 – user631756 2012-02-03 22:13:50