如何从mysql数据库中随机获取变量? (使用php与dbo连接)

时间:2017-11-07 21:33:32

标签: php mysql dbo

我的问题清楚地在标题中说明了,无论如何更详细的问题是如何在xampp环境中使用带有dbo连接的php从mysql数据库中随机显示变量(例如名称)。

以下是我从头开始提出的建议: -

 <?php
                $db = new PDO 
                ('mysql:dbname=lab1;host=localhost;charset=utf8','root', 
                '');
                $stmt = $db->prepare('SELECT * FROM countries');
 ?>


                <head>
                <meta charset="UTF-8"/>
                <p>RANDOM!</p>
                </head>


                <body>
<?php
                $stmt -> execute();
                foreach($stmt as $row){
                $something = array ($row['name'] . $row['name']);
                }
                $rand_keys = array_rand($something, 1);
                echo $something[$rand_keys[0]] . "\n";
?>
                </body>

当我尝试打开它时(从localhost)

似乎不起作用

2 个答案:

答案 0 :(得分:0)

您可以像其他建议一样使用order by RAND()。但我认为你尝试的方式不起作用,因为你在数组中添加元素的方式。如下所示:

$something = array ($row['name'] . $row['name']);

不会将多个元素(例如国家/地区名称)推送到数组中。它将重复两次的同一国家/地区名称的连接字符串替换以前的值。 (如果国家名称是阿富汗,那么您的数组将始终具有一个元素AfghanistanAfghanistan

更改您的代码,如下所示:

<?php
            $stmt -> execute();
            $something = [];
            foreach($stmt as $row){
                $something[] = $row['name'];
            }
            $rand_keys = array_rand($something, 1);
            echo $something[$rand_keys[0]] . "\n";
?>

希望这会奏效。

答案 1 :(得分:0)

根据您的评论&#34; 抱歉我无法清楚地表达我的问题,所以基本上我在mysql中有一个表,有4列,截至目前它有2行输入,现在我希望能够回应让我说只有1个字段(随机)当我从localhost打开文件时刷新文件... &#34; ......你需要做一个复合随机化:)

从这个sql更改开始随机只抓一行(所有列):

SELECT * FROM countries ORDER BY RAND() LIMIT 1

然后检索那一行,然后从可用列中随机选择:

$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_NUM);// PDO example, important to fetch by indexes, not associative names

echo $row[ rand(0,count($row)) ];

那应该从随机抓取的行中随机拉出一列。