我如何插入一个X|Y的随机点,它还没有在我的Mysql数据库中


how can I INSERT a random Point with X|Y which is not yet in my Mysql Database

是的。

我有一些坐标基础。他们都在中心附近。现在我想在唯一坐标处,在其他基点附近再添加一个基点。到目前为止,我已经考虑过了:

INSERT INTO `mydb`.`base`
    (`idbase`, `coordinate_X`, `coordinate_Y`)
    VALUES (NULL,
            '(FLOOR( 1 + RAND( ) *((select max(coordinate_X))+1)))',
            '(FLOOR( 1 + RAND( ) *((select max(coordinate_Y))+1)))'
           );

idbase是自动递增的,这就是我插入空的原因

到目前为止,这就是我如何在我希望他们拥有的区域中选择一个点。我已经准备好用坐标做一个唯一的索引了。但我怎么能确定,一个新的基地是在一个新点上创建的呢?

我宁愿不在php中使用while循环,我认为这不是一个好的解决方案。

编辑:

这甚至都不起作用,我不能在insert语句中进行subselect。。

也许使用INSERT..SELECT构造,而不是在侧引号中使用格式错误的子查询:

INSERT INTO `mydb`.`base`
    (`idbase`, `coordinate_X`, `coordinate_Y`)
    SELECT NULL,
           FLOOR( 1 + RAND( ) * (max(coordinate_X)+1) ),
           FLOOR( 1 + RAND( ) * (max(coordinate_Y)+1) )
        FROM mydb.base;

只是告诉:

我用PHP解决了这个问题:

function newbase($user)//create a new base for given user
{
    $mycon = createconnection();
    $sql = "SELECT max(abs(coordinate_X)+1) as X,max(abs(coordinate_Y)+1) as Y FROM `base`";
    $range = $mycon->query($sql)->fetch_assoc();
    do
    {
    $coordinateX = rand(-$range['X'], $range['X']);
    $coordinateY = rand(-$range['Y'], $range['Y']);//get random coordinates
    $sql = "INSERT INTO `inetphan_gibb`.`base` (`idbase`, `coordinate_X`, `coordinate_Y`, `name`, `user_iduser`) VALUES (NULL, '$coordinateX', '$coordinateY', 'Just a unnamed base', '{$user['iduser']}');";
    $mycon->query($sql);
    } while ($mycon->affected_rows < 1);//repeat until a row is affected
    $mycon->close();
}