[英]array_rand function returns empty sometimes
我想做一個小服務。該服務的主要思想是顯示 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 並將它們放入數組中。第二個查詢,從上一個查詢的結果中獲取隨機 id 並顯示相關 id 的整行。我卡在了隨機函數上。 如果我需要用百分比來解釋這項工作以便更清楚,
[]
%10我想看截圖,但系統因為我的名聲沒有給許可。所以,最后的聲明像往常一樣,“我不太擅長PHP。知道嗎?” 老實說,任何幫助將不勝感激。
您應該等待數組在 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']
從文檔
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];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.