如果满足条件,如何在函数内运行函数

时间:2015-10-28 07:27:27

标签: php mysql


请问我一直在尝试创建一个查询数据库的函数,从表中选择,如果行数不等于6,那么表中的一行会重复(或者可能重复)直到行count等于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; }
}

提前致谢!

1 个答案:

答案 0 :(得分:0)

您可以将此代码重写为

//List All active adverts

$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);

if($count >= 1 && $count != 6)
  $list = getDefaultBannner();
else
  $list = showActiveAdverts($query);

function showActiveAdverts($query)
{

    $status = 1;
    //Build final queries.

    $row = mysql_fetch_assoc($query);

    if($count >= 1){ 
        do{ 
            $list[] = $row['id']; 
        }while($row = mysql_fetch_assoc($query));
        return $list;
    }
    else{ return FALSE; }
    }