我正在使用 CodeIgniter 的活动记录类,查询如下所示:
$query = $this->db
->get_where('Table', array('field' => $value));
从第一行获取字段值的最快方法是什么?
$query->first_row->field;
有用吗?
虽然速度快固然美妙,但错误却不是!确保在尝试使用
($query->num_rows() > 0)
访问结果之前始终检查结果
最快(最简洁)的方式:
$query = $this->db->get_where('Table', array('field' => $value));
echo(($query->num_rows() > 0) ? $query->first_row()->field : 'No Results');
本质上与:
相同$query = $this->db->get_where('Table', array('field' => $value));
if($query->num_rows() > 0)
{
echo $query->first_row()->field;
}
else
{
echo 'No Results';
}
对于多个字段使用:
$query = $this->db->get_where('Table', array('field' => $value));
if ($query->num_rows() > 0)
{
$row = $query->row();
echo $row->title;
echo $row->name;
echo $row->body;
}
$query->first_row()->field
如果您对
num_rows()
返回的值进行空合并,则无需检查 ->row()
。 row()
返回一个对象或 null
。
return $this->db
->get_where('Table', ['field' => $value])
->row()
->field ?? null;
或者,更简洁地使用空安全属性访问。
return $this->db
->get_where('Table', ['field' => $value])
->row()
?->field;
如果没有行或者第一行中的
null
值为 field
,以上两者都会返回 null
。 如果 field
生成的对象中没有 row()
属性,故障安全脚本将发出警告。