我尝试使用codeigniter显示一个查询的两个数据。
$query = "SELECT count(distinct p.id_paciente), count(c.pacientes_id_paciente) FROM paciente p, cita c WHERE p.id_paciente=c.pacientes_id_paciente AND p.usuarios_id_usuario=43 AND p.aseguradoras_id_aseguradora=8 AND c.dia_cita>='2015-04-16' AND c.dia_cita<='2015-04-16'";
$sql = $this->db->query($query);
如何显示计数的两个结果(不同的p.id_paciente)和计数(c.pacientes_id_paciente)
我尝试使用
foreach ($sql->result_array() as $row)
{
echo $row['id_paciente'];
echo $row['pacientes_id_paciente'];
}
但只显示数组的内容......
由于
答案 0 :(得分:1)
您的代码存在以下问题:
SELECT COUNT(distinct p.id_paciente) AS count1, ...
^^^^^^
不要自己插入查询字符串。使用Codeigniter的查询绑定
这可能与您无关,但如果dia_cita
有时间组件(即类型为datetime
),您可能希望将WHERE
条件更改为< / p>
c.dia_cita >= ? AND c.dia_cita < ? + INTERVAL 1 DAY
foreach
循环。您始终只使用此查询获得一行。因此,请使用Codeigniter的row()
或row_array()
。据说你的代码可能看起来像
$sql = "
SELECT COUNT(DISTINCT p.id_paciente) AS count1,
COUNT(c.pacientes_id_paciente) AS count2
FROM paciente p JOIN cita c
ON p.id_paciente = c.pacientes_id_paciente
WHERE p.usuarios_id_usuario = ?
AND p.aseguradoras_id_aseguradora = ?
AND c.dia_cita >= ?
AND c.dia_cita < ? + INTERVAL 1 DAY
";
$bindings = array(43, 8, '2015-04-16', '2015-04-16')
$row = $this->db
->query($sql, $bindings)
->row_array();
echo $row['count1'], $row['count2'];