查询始终在行数

时间:2017-05-10 19:04:33

标签: php mysql codeigniter mysqli

我的'intervalos'包含很多'entregas'所以当我点击时我想计算行数,但它总是返回'1'作为结果。我究竟做错了什么?请帮忙。

数据库 enter image description here

Entregas Controller

public function entregas_lista($idCarga) {

        $crud = new grocery_CRUD();

        $this->Entregas_Model->get_rows($idCarga);




        $this->load->view('commons/header', $datos);


        $crud->set_language("spanish");
        $crud->set_theme('bootstrap');

        $crud->set_table('entregas');
        $crud->unset_columns(array('accion', 'estado'));

        $crud->display_as('idIntervaloHorario', 'Franja Horaria');
        $crud->display_as('idAcciones', 'Acción');
        $crud->display_as('idEstadoSolicitud', 'Estado Solicitud')->display_as('fechaCita', 'Fecha Cita')
                ->display_as('horaCita', 'Hora Cita')
                ->display_as('numeroEntrega', 'Nº Entrega')
                ->display_as('Origen', 'Orígen')
                ->display_as('cargaPrevista', 'Carga Prevista')
                ->display_as('entregaPrevista', 'Entrega Prevista');


        //Clausula where
        $crud->where('entregas.idIntervaloHorario =', $idCarga);

        $crud->display_as('idCarga', 'Nº Entrega');

        $crud->set_relation('idCarga', 'intervalosHorarios', 'intervaloHorario');

        $crud->set_relation('idIntervaloHorario', 'intervalosHorarios', 'intervaloHorario');
        //Relación con la tabla acciones
        $crud->set_relation('idAcciones', 'acciones', 'nombreAccion');
        //Relación con la tabla estado
        $crud->set_relation('idEstadoSolicitud', 'estadosolicitudes', 'nombreEstado');

        $output = $crud->render();

        $this->_example_output($output);

Entregas Model

 public function get_rows($idCarga) {

        $query = $this->db->query('SELECT COUNT(*) FROM entregas
        JOIN intervaloshorarios on intervaloshorarios.idIntervaloHorario = entregas.idCarga
        WHERE entregas.idIntervaloHorario = ' . $idCarga . ';');


        $query = $this->db->count_all_results();


        $num_rows = count($query);
        print_r($num_rows);


        return $num_rows;
    }

2 个答案:

答案 0 :(得分:1)

不同的方法:

public function get_rows($idCarga) {

    $query = $this->db->query('SELECT COUNT(idCarga) as count FROM entregas
    JOIN intervaloshorarios on intervaloshorarios.idIntervaloHorario = entregas.idCarga
    WHERE entregas.idIntervaloHorario = ?');    // Safer with bound parameters 


   $stmt = $db->prepare($query);    // prepare
   $stmt->bind_param('s',$idCarga);  // bind the parameter
   $stmt->execute();                 // execute
   $stmt->bind_result($count);
   $stmt->fetch();

    return $count;
}

答案 1 :(得分:0)

根据您的查询,您需要提出COUNT

$query = $this->db->query('SELECT COUNT(*) FROM entregas
        JOIN intervaloshorarios on intervaloshorarios.idIntervaloHorario = entregas.idCarga
        WHERE entregas.idIntervaloHorario = ' . $idCarga . ';');

所以基本上,如果你在phpmyasmin或mysql提示符中运行它,它会给你一个结果,即适合你查询的'COUNT'记录。

我不知道你的接口方法,所以我只是建议得到这个结果的值。这将是你的行数。

或者,您可以简单地执行SELECT然后计算行数,但这会增加您的结果集和获取时间,只需计算sql可以自己计算的内容。