期望参数1为资源

期望参数1为资源

当我执行以下查询函数时,执行成功,但是在查询结果上方出现警告:


  mysql_num_rows()期望参数1为资源,布尔


我该如何解决?

public function retrieve()
{
    $id=JRequest::getVar('id');
    $db =JFactory::getDBO();
    $sql="select *
          from
            #__npco_car,#__npco_namayeshgah,#__npco_agahi
          where
            #__npco_car.car_id='$id' and
            #__npco_namayeshgah.id_namayeshgah=#__npco_agahi.id_namayeshgah and
            #__npco_car.car_id=#__npco_agahi.car_id
     ";
    $db->setQuery($sql);

    $db->query();
    $row = $db->getNumRows();

    if($row == 1) {
        return $db->loadAssocList();
    } else {
        $db = JFactory::getDBO();
        $sql="select *
              from
                 #__npco_car,#__npco_useragahi,#__npco_user
              where
                 #__npco_car.car_id='$id' and
                 #__npco_user.id_user=#__npco_useragahi.id_user and
                 #__npco_car.car_id=#__npco_useragahi.car_id
        ";
        $db->setQuery($sql);
        return $db->loadAssocList();
    }
}

最佳答案

您的代码有几个问题。


切勿使用未经检查/未经验证的请求值,即使在示例中也不要使用!
使用查询生成器。
通过以下方式减少耦合:a)在构造函数中设置数据库,这已经在模型中完成,并且b)在控制器中检索id。
您尝试从多个表中获取所有字段(*),这些表具有一些共同的列名。这是行不通的。
看一下JOIN。


这将起作用:

public function retrieve($id)
{
    $query = $this->_db->getQuery(true);
    $query->select('#__npco_car.*')->from(array('#__npco_car', '#__npco_namayeshgah', '#__npco_agahi'));
    $query->where('#__npco_car.car_id = ' . (int) $id);
    $query->where('#__npco_namayeshgah.id_namayeshgah = #__npco_agahi.id_namayeshgah');
    $query->where('#__npco_car.car_id = #__npco_agahi.car_id');

    $this->_db->setQuery($sql);
    $rows = $this->_db->loadAssocList();

    if (empty($rows))
    {
        $query = $this->_db->getQuery(true);
        $query->select('#__npco_car.*')->from(array('#__npco_car, #__npco_useragahi, #__npco_user'));
        $query->where('#__npco_car.car_id = ' . (int) $id);
        $query->where('#__npco_user.id_user = #__npco_useragahi.id_user');
        $query->where('#__npco_car.car_id = #__npco_useragahi.car_id');
        $db->setQuery($sql);
        $this->_db->setQuery($sql);
        $rows = $this->_db->loadAssocList();
    }

    return $rows;
}

关于mysql - mysql_num_rows()期望参数1为资源,在joomla组件中为 bool 值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18118327/

10-10 17:42