1

我刚刚开始使用 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;
   }

谁能提供替代解决方案?

4

4 回答 4

4

我只是快速搜索了一下。我要睡觉了,但你能试试这样的吗:

$query->result_array();

如果还是不行,我明天去看看。

来源:用户指南也许它会派上用场。

于 2013-08-08T21:07:45.767 回答
2

有两个假设:要么我误解了这个问题,要么其他人做了。

要点:通过1作为第二个参数传递给$this->db->get();方法,它设置LIMIT 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()操作结果数组:

function getName($array) {
    return $array['m_name'];
}

$array = array_map("getName", $rows1);

print_r($array);

如果您使用的是 PHP v5.3+,请执行以下操作:

$array = array_map(function($array) {
    return $array['m_name'];
}, $rows1);
于 2013-08-08T21:06:50.080 回答
1

好吧, CodeIgniter 用户指南中有官方页面,用于生成描述变化的数据库查询结果,例如

$row = $query->first_row()
$row = $query->last_row()
$row = $query->next_row()
$row = $query->previous_row()

如果您使用 CodeIgniter,它的魅力在于它有效地很好地记录了它。

如果这是你想要的,我会假设你可以进一步深入抽象层,分别你不能使用 DB 类,而是你选择的类作为自定义库或其他。

那么为什么您对给定的可能性不满意,分别是您希望如何生成查询结果?

于 2013-08-08T21:15:21.680 回答
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
于 2013-08-09T06:39:20.583 回答