我想做一点服务。服务的主要思想是从mysql表中显示一条记录,并且随机点击每次点击。
这是我写的代码:
<?php
require'connection.php';
$dbQueryFirst = $nesnePDO->prepare("SELECT CategoryID FROM Categories");
$dbQueryFirst->execute();
while ($resultsFirst = $dbQueryFirst->fetch(PDO::FETCH_ASSOC))
{
$getidFirst[] = $resultsFirst;
$puppet = array_rand($getidFirst);
if ($puppet == null && empty($puppet))
{
shuffle($getidFirst);
}
}
$rndID = $puppet;
$dbQuerySecond = $nesnePDO->prepare("SELECT * FROM Categories WHERE CategoryID = :CategoryID");
$dbQuerySecond->bindParam(":CategoryID",$rndID);
$dbQuerySecond->execute();
$resultsSecond = $dbQuerySecond->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($resultsSecond);
?>
第一个查询是,从db获取id并将它们带入array.Second查询,从上一个查询的结果中获取随机id并显示相关id的整行。我被卡住了在随机函数。 如果我需要用百分比来解释这项工作,以便更清楚,
[]
%10 我希望这个节目有截图,但由于我的声誉,系统没有给出许可。所以,最后的声明像往常一样,&#34;我不擅长PHP。任何想法? &#34;老实说,任何帮助将不胜感激。
答案 0 :(得分:1)
您应该等待数组在while循环中填充,然后从中获取随机值。
while ($resultsFirst = $dbQueryFirst->fetch(PDO::FETCH_ASSOC))
{
$getidFirst[] = $resultsFirst;
}
$puppet = array_rand($getidFirst);
$rndID = $getidFirst[$puppet];
此外,您可以直接从数据库中随机输入,而无需使用php。
$dbQueryFirst = $nesnePDO->prepare("SELECT CategoryID FROM Categories ORDER BY RAND() LIMIT 1");
$dbQueryFirst->execute();
$rndID = $dbQueryFirst->fetch(PDO::FETCH_ASSOC)
顺便说一下,你应该像这样获得你的CategoryID
$rndID['CategoryID']
答案 1 :(得分:0)
来自文档
When picking only one entry, array_rand() returns the key for a random entry
其次,$ resultsFirst,我认为,是你需要的数组$resultsFirst['CategoryID']
所以,使用
while ($resultsFirst = $dbQueryFirst->fetch(PDO::FETCH_ASSOC)) {
$getidFirst[] = $resultsFirst['CategoryID'];
}
$puppet = array_rand($getidFirst);
$rndID = $getidFirst[$puppet];