我是一个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);
很抱歉,如果这很简单,我已经尝试了各种语法变体并用谷歌搜索了它,但我只能找到如何将行结果变成变量......
答案 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_row
或fetch_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()
- 将结果集的当前行作为对象返回