获取MySql选择FLOOR(rand)AS到PHP变量中

时间:2017-10-26 09:16:03

标签: php mysql

我是一个PHP新手,我试图找出将以下代码中的random_num转换为PHP变量的最佳方法。

$query = "SELECT FLOOR(rand(0, 28000) as random_num
     FROM numbers_mst 
     WHERE random_num NOT IN (SELECT random_num FROM numbers_mst)
     LIMIT 1";

$mysqli->query($query);

很抱歉,如果这很简单,我已经尝试了各种语法变体并用谷歌搜索了它,但我只能找到如何将行结果变成变量......

2 个答案:

答案 0 :(得分:1)

MySQL不会在单个查询中执行您想要的操作。您需要迭代查询以获取唯一编号:

do {
    $random = rand(0, 28000);
    $query = "SELECT numbers FROM numbers_mst
              WHERE numbers = $random LIMIT 1";
    $result = $mysqli->query($query);
} while ($result->num_rows > 0);

这样您可以根据需要使用$ random作为您的唯一随机数。

答案 1 :(得分:0)

使用fetch_rowfetch_object http://php.net/manual/en/mysqli-result.fetch-row.php

所以你的代码将是:

$query = "SELECT FLOOR(rand(0, 28000)) as random_num
FROM numbers_mst 
WHERE random_num NOT IN (SELECT numbers FROM numbers_mst)
LIMIT 1";

$result = $mysqli->query($query)->fetch_object()->random_num; // This will contain your number

虽然您正在阅读其他功能,但如果您想进一步了解多个结果:

mysqli_fetch_array() - 将结果行提取为关联行,数字数组或两者

mysqli_fetch_assoc() - 将结果行作为关联数组

mysqli_fetch_object() - 将结果集的当前行作为对象返回