如何找到随机表中的随机行

时间:2016-10-30 18:44:00

标签: php mysql sql random

我正在尝试创建一个网站,用户可以在该网站上对游戏中的不同项目进行投票,例如等级列表。我希望用户投票的项目来自该表中的随机表和随机行。

现在,我设置了以下代码来查找随机项:

$ran = mt_rand(1, 10);
switch ($ran) {
    case "1":$sql = "SELECT item, rating FROM ditems ORDER BY RAND() LIMIT 1";  
         $result = $conn->query($sql);  
         while($row = $result->fetch_assoc()) {
            echo $row["gun"];
         };
         break;
    case "2":$sql = "SELECT item, rating FROM citems ORDER BY RAND() LIMIT 1";  
         $result = $conn->query($sql);  
         while($row = $result->fetch_assoc()) {
            echo $row["item"];
         }; 
etc

我遇到的问题是我无法访问所选项目在switch{}语句之外的内容,因为$row数组是在本地声明的,但我必须能够这样做,以便我可以设置一个按钮来对项目进行投票。

编辑:我决定将所有项目都放在一个表格中,然后选择一个项目     按兰德限制1

1 个答案:

答案 0 :(得分:0)

您可以SELECT另一个带有文本常量的列来表示选择了哪个实体:

$ran = mt_rand(1, 10);
switch ($ran) {
    case "1":$sql = "SELECT 'ditem' as entity, item, rating FROM ditems ORDER BY RAND() LIMIT 1";  
         $result = $conn->query($sql);  
         while($row = $result->fetch_assoc()) {
            echo $row["gun"];
         };
         break;
    case "2":$sql = "SELECT 'citem' as entity, item, rating FROM citems ORDER BY RAND() LIMIT 1";  
         $result = $conn->query($sql);  
         while($row = $result->fetch_assoc()) {
            echo $row["item"];
         }; 
etc