php函数获取两个可选参数并编写where类


php function get two optional argument and write where class

我有一个函数,它计算表中记录的总数,并获得两个参数,这两个参数都是可选的。

function getTotal($id=0,$id1=0)
    {
        ($id==0?$addQuery="":$addQuery=" where art_id=".$id);
        if($id1<>0 && $id==0)
        {
        $addQuery=" where up_type=".$id1
        }
        if($id1<>0 && $id<>0)
        {
        $addQuery=" and up_type=".$id1
        }
        mysql_set_charset('utf8');
        $query="SELECT COUNT(id) FROM tbl_up ".$addQuery;
        $result=$this->query($query,1);
        return $result;
    }

如果你看到我写如果id被传递,那么我把where类放在一行中

但是,如果第二个参数id1是否被传递,我需要向where类添加文本,但这里是如果id被传递,那么它应该从开始,如果id没有被传递,它应该从和开始

我试着写,但这些行太多了,我需要一些像第一行一样的东西

($id==0?$addQuery="":$addQuery=" where art_id=".$id);

用于第二个agrument。

感谢

function getTotal($id=0,$id1=0)
    {
        $where = array();
        if ($id) $where[]='`art_id`="'.$id.'"';
        if ($id1) $where[] = '`up_type`="'.$id1.'"';
        $where = (!count($where) ? '' : 'WHERE '.implode(' AND ', $where));
            $query="SELECT COUNT(id) FROM tbl_up ".$where;
            mysql_set_charset('utf8');
            $result=$this->query($query,1);
            return $result;
    }

try:

function getTotal($id = 0,$id1 = 0) {
  // sorry, I rewrite the first expression to this, easier to read IMHO
  $addQuery = $id == 0 ? "" : " where art_id='".mysql_real_escape_string($id)."'";
  if ($id1 <> 0)
    $addQuery .= ($id == 0 ? " where" : " and") . " up_type='".mysql_real_escape_string($id1)."'";
  mysql_set_charset('utf8');
  $query="SELECT COUNT(id) FROM tbl_up ".$addQuery;
  $result=$this->query($query,1);
  return $result;
}
function getTotal($id=0,$id1=0)
{
    $addQuery="where 1=1"
    if($id <>0)  $addQuery.=" and art_id =".$id
    if($id1<>0)  $addQuery.=" and up_type=".$id1
    mysql_set_charset('utf8');
    $query="SELECT COUNT(id) FROM tbl_up ".$addQuery;
    $result=$this->query($query,1);
    return $result;
}

这是一种让多个案例测试的通用方法