在php类中返回多个mysql结果

时间:2011-03-05 12:21:41

标签: php mysql class collections

我正在尝试在课堂上构建自己的CMS 现在,当我尝试从MySQL数据库中获取数据时,我遇到了问题 而不是一个项目,我想得到我的所有项目的集合

最后我想得到一个Object,所以我可以读出它:$ item-> id

这是我的代码:

static function getContentItems($id, $active, $sort_by, $sort_type, $limit) {
    if (isset($id) && !empty($id)) {
        $where .= "WHERE id = ".$id;
    }
    if (isset($active) && !empty($active)) {
        $where .= " AND active = ".$active;
    }
    if (isset($sort_by) && !empty($sort_by)) {
        $where .= " ORDER BY ".$sort_by;

        if (isset($sort_type) && !empty($sort_type)) {
            $where .= " ".$sort_type;
        }
    }
    if (isset($limit) && !empty($limit)) {
        $where .= " LIMIT 0,".$limit;
    }

    if (isset($where) && !empty($where)) {
        $query = "SELECT * FROM content ".$where;   
    } else {
        $query = "SELECT * FROM content";
    }
    $result = mysql_query($query)or die(mysql_error());

    $item = new ContentItem();
    while ($data = mysql_fetch_array($result)) { 
        $item->id = $data['id'];
    }   
    return $item;
}

}

3 个答案:

答案 0 :(得分:1)

不要使用.

启动$ where where字符串
if (isset($id) && !empty($id)) {
        $where = "WHERE id = ".$id;
    }

并且alwez打印您的$query

更好的解决方案

if (!empty($id) {
        $where = " WHERE id = ".$id;
   if (!empty($active)) {
          $where .= " AND active = ".$active;
     if (!empty($sort_by)) {
          $where .= " ORDER BY ".$sort_by;
        if (!empty($sort_type)) {
            $where .= " ".$sort_type;
        }
    }
  }
}
if (empty($limit)) {
        $where .= " LIMIT 0,".$limit;
}

以后

$item = new ContentItem();       
$data = array(); $i=0;
while ($data = mysql_fetch_object($result)) {                
         $search_result[$i] = $data;
         $i++;
    }   
 return $search_result;

可以通过$search_result[$i]->id

检索任何ID

答案 1 :(得分:0)

为什么不使用数组?

像这样:

$collection = array();
while ($data = mysql_fetch_array($result)) {
    $item = new ContentItem();
    $item->id = $data['id'];
    $collection[] = $item;     //Appends the item to the array
}
return $collection;

您可以通过以下方式访问阵列:

$collection = YourClassName::getContentItems(...);
foreach($collection as $item) {
    // do something with each $item
    print_r($item);
}

答案 2 :(得分:0)

查看使用mysql_fetch_object http://php.net/manual/en/function.mysql-fetch-object.php而不是mysql_fetch_array ..它将db作为对象的行返回