我刚开始使用CodeIgniter并希望使用$query->result()
从数据库获取数据,但没有foreach
循环。这是我目前的代码:
$this->db->select('m_name');
$query1 = $this->db->get("marchant_details",1);
$rows1 = $query1->result();
但是,我不想像这样使用foreach
循环来检索数据:
foreach($query1->result() as $rows1)
{
$name[] = $rows1->m_name;
}
有人可以提供替代解决方案吗?
答案 0 :(得分:4)
答案 1 :(得分:2)
有两个假设:或者我误解了其他人的问题或。
关键点:将1
作为第二个参数传递给$this->db->get();
方法,它将LIMIT 1
设置为查询,您将只获得{{1}行结果。
那么,为什么需要在单行数据库结果上使用循环?
如果您使用1
,结果将类似于:
$query->result();
要获取Array
(
[0] => stdClass Object
(
[m_name] => Foo
)
)
值,您可以执行以下操作:
m_name
无论出于何种原因,如果您需要一个包含值的数值数组(就像您在循环中所做的那样),您只需按$result = $query->result();
echo $result[0]->m_name;
执行此操作。
如果您使用$name[] = $result[0]->m_name;
,结果将类似于:
$query->result_array();
要获取Array
(
[0] => Array
(
[m_name] => Foo
)
)
值,您可以执行以下操作:
m_name
但如果您停止限制查询,则查询结果中有多行,您可以使用$result = $query->result_array();
echo $result[0]['m_name'];
代替。和rows1 = $query1->result_array();
来操纵给定数组的元素:
array_map()
使用$rows1 = $query1->result_array();
// `$row1` will be something like this:
Array
(
[0] => Array
(
[m_name] => Foo
)
[1] => Array
(
[m_name] => Bar
)
[2] => Array
(
[m_name] => Baz
)
)
来操作结果数组:
array_map()
如果您使用的是PHP v5.3 +,请执行以下操作:
function getName($array) {
return $array['m_name'];
}
$array = array_map("getName", $rows1);
print_r($array);
答案 2 :(得分:1)
CodeIgniter User Guide for generating DB query results中的官方页面描述了
等变体$row = $query->first_row()
$row = $query->last_row()
$row = $query->next_row()
$row = $query->previous_row()
如果您使用CodeIgniter,它的魅力在于它有效地记录下来。
我认为如果这是你想要的,你可以进一步深入抽象层,你可以分别使用DB类,而不是你选择的类作为自定义库或其他类。
为什么您不满意给定的可能性,分别如何生成查询结果?
答案 3 :(得分:1)
你可以这样做
$data=array();
$this->db->select('m_name');
$query1 = $this->db->get("marchant_details",1);
$data['name'] = $query1->result_array();
return $data;
以及更多信息
result_array(); // For multiple rows
row_array(); // For one row