0
請問我一直在試圖創建一個函數來查詢數據庫,從表中選擇,如果行數不等於6,然後從表中的一行,並重復(或可能重複),直到行數等於6.我已經在StackOverflow中搜索此,但沒有得到任何接近。如果你有類似的鏈接,請在這裏發佈,我會給它一個。
這裏是我的代碼:
如何在符合條件的函數中運行函數
//List All active adverts
function showActiveAdverts()
{
$status = 1;
//Build final queries.
$query = mysql_query("SELECT * FROM table WHERE
status = '".mysql_real_escape_string($status)."' ORDER BY rand() LIMIT 6") or die(mysql_error());
$count = mysql_num_rows($query);
$row = mysql_fetch_assoc($query);
# My question here, check if the $count >= 1 && $count != 6, then do getDefaultBannner() and repeat it until it runs for 6 times.
if($count >= 1){
do{
$list[] = $row['id'];
}while($row = mysql_fetch_assoc($query));
return $list;
}
else{ return FALSE; }
}
下面的代碼爲getDefaultBannner()
function getDefaultBannner()
{
$status = 6;
$query = mysql_query("SELECT id FROM table WHERE status = '".mysql_real_escape_string($status)."' ")
or die(mysql_error());
$count = mysql_num_rows($query);
$row = mysql_fetch_assoc($query);
if($count >= 1){
do{
$list[] = $row['id'];
}while($row = mysql_fetch_assoc($query));
return $list;
}
else{ return FALSE; }
}
提前
謝謝!
你可能想嘗試做的SQL水平,而不是一個'UNION'的方式,讓你_always_找回6行,不管是什麼。這將簡化您的邏輯並保持更強大的功能。 – arkascha
這是我正在努力實現的目標。我有6個廣告位,如果沒有找到有效廣告,則應該填充默認圖片。如果我查詢數據庫,並且我獲得的活動廣告少於6個(根據他們的狀態),其他空白插槽應該填充默認圖像。 'UNION'會在SQL級別上解決這個問題嗎? @arkascha –
那麼,使用'UNION ALL',你可以將兩個'SELECT'查詢的結果合併爲一個。第一個查詢將是隨機的,第二個查詢默認橫幅6次。這意味着您總是會返回至少6行,您現在可以將總數限制爲6個。這將允許只運行一條語句,但該語句稍微複雜一些。棘手的一點是「6次」。這需要一個存儲過程,或者簡單實用,只需在表格中存儲默認橫幅6次。 – arkascha