从Mysql查询创建会话数组

时间:2012-10-29 18:06:50

标签: php arrays session

我对会话或阵列不太满意。

这是我到目前为止所得到的错误

  

警告:mysql_fetch_array():提供的参数不是有效的MySQL结果资源。

这是我的代码:

$checkgroupadmin = $this->db->query("SELECT group_id FROM groupadmin 
  WHERE contact_id = $contactid");
while ($adminrow = mysql_fetch_array($checkgroupadmin, MYSQL_ASSOC)) {
  $_SESSION[group_admin] = array('group'=>$adminrow['group_id']);
}

任何帮助将不胜感激。 :)

2 个答案:

答案 0 :(得分:1)

  
    

警告:mysql_fetch_array():提供的参数不是有效的MySQL结果资源。

  

您收到错误是因为$checkgroupadmin不是mysql_fetch_array()所需的实际查询资源。

$checkgroupadmin = $this->db->query("SELECT group_id FROM groupadmin WHERE contact_id = $contactid");`

换句话说,上面的面向对象调用没有返回mysql资源查询。

为什么要将面向对象的风格与程序风格混合在一起。其次,上面的代码$this>db->query应该在Class'方法

中发生

答案 1 :(得分:0)

mysql_fetch_array()返回当前结果的关联数组,但在您的代码中,您只需覆盖$_SESSION中每个结果的相同值。您可能需要创建自己的结果ID数组,然后将其分配给$_SESSION变量。

// query database
$checkgroupadmin = $this->db->query("SELECT group_id FROM groupadmin WHERE contact_id = $contactid");
// array to hold each group_id
$result_array = array();
// varify that $checkgroupadmin returned results 
if ($checkgroupadmin){
    // get results into associative array
    while ($adminrow = mysql_fetch_array($checkgroupadmin, MYSQL_ASSOC)) {
        // put the group id into your results array
        $result_array[] = $adminrow['group_id'];
    }
}
// set results array to the 'group_admin' key in $_SESSION
$_SESSION['group_admin'] = $result_array;

请注意,mysql_* extensions have been deprecated您应该使用mysqliPDO