CodeIgniter 选择查询

Posted

技术标签:

【中文标题】CodeIgniter 选择查询【英文标题】:CodeIgniter Select Query 【发布时间】:2011-09-18 11:31:49 【问题描述】:

我有一个简单的 CodeIgniter 活动记录查询来选择一个 ID:

$q = $this -> db
           -> select('id')
           -> where('email', $email)
           -> limit(1)
           -> get('users');

如何将上述 ID 分配给变量(例如 $id) 例如,

echo "ID is" . $id;

谢谢。

【问题讨论】:

【参考方案1】:

这很简单。例如,这是我的一个随机代码:

function news_get_by_id ( $news_id )


    $this->db->select('*');
    $this->db->select("DATE_FORMAT( date, '%d.%m.%Y' ) as date_human",  FALSE );
    $this->db->select("DATE_FORMAT( date, '%H:%i') as time_human",      FALSE );


    $this->db->from('news');

    $this->db->where('news_id', $news_id );


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

    if ( $query->num_rows() > 0 )
    
        $row = $query->row_array();
        return $row;
    

   

这将返回您选择的“行”作为数组,以便您可以像这样访问它:

$array = news_get_by_id ( 1 );
echo $array['date_human'];

我也强烈建议,不要像你一样链接查询。总是像在我的代码中一样将它们分开,这显然更容易阅读。

还请注意,如果在 from() 中指定表名,则调用 get() 函数时不带参数

如果你不明白,请随时问:)

【讨论】:

感谢您的回复。我设法做到了:if ( $query->num_rows() > 0 ) $row = $query->row(); return $row->id; 我也很好,单独的查询更容易阅读,但我在 codeigniter 文档中找到了这个例子。我认为它可能有什么优势? 链式查询看起来很“酷”,但仅此而已。我有我的整个代码,就像上面这个随机示例一样。它更容易阅读;) 这里第二个参数FALSE有什么意义? @Herr 使用方法链是不好的做法吗?还是与性能有关?【参考方案2】:

使用 Result Rowsrow() 方法返回单个结果行。

$id = $this 
    -> db
    -> select('id')
    -> where('email', $email)
    -> limit(1)
    -> get('users')
    -> row();

然后,您可以随意使用。 :)

echo "ID is" . $id;

【讨论】:

【参考方案3】:

一个捷径是

$id = $this -> db
       -> select('id')
       -> where('email', $email)
       -> limit(1)
       -> get('users')
       -> row()
       ->id;
echo "ID is ".$id;

【讨论】:

【参考方案4】:
function news_get_by_id ( $news_id )


    $this->db->select('*');
    $this->db->select("DATE_FORMAT( date, '%d.%m.%Y' ) as date_human",  FALSE );
    $this->db->select("DATE_FORMAT( date, '%H:%i') as time_human",      FALSE );


    $this->db->from('news');

    $this->db->where('news_id', $news_id );


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

    if ( $query->num_rows() > 0 )
    
        $row = $query->row_array();
        return $row;
    

   
This 

【讨论】:

【参考方案5】:

当使用 codeIgniter 框架时,请参考此活动记录链接。数据如何与结构等交互。

以下函数允许您构建 SQL SELECT 语句。

选择数据

$this->db->get();

运行选择查询并返回结果。可单独用于检索表中的所有记录:

$query = $this->db->get('mytable');

可以访问每一行

$query = $this->db->get('mytable');

foreach ($query->result() as $row)

    echo $row->title;

哪里有线索

$this->db->get_where();

EG:

 $query = $this->db->get_where('mytable', array('id' => $id), $limit, $offset);

选择字段

$this->db->select('title, content, date');

$query = $this->db->get('mytable');

// Produces: SELECT title, content, date FROM mytable

E.G

$this->db->select('(SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4') AS amount_paid', FALSE); 
$query = $this->db->get('mytable');

【讨论】:

【参考方案6】:
$query= $this->m_general->get('users' , array('id'=> $id ));
echo $query[''];

没问题;)

【讨论】:

好的答案将解释如何看待问题提出的障碍,提出解决方案并解释两者如何联系。 “这样做是因为它是最好的方式”可能是一个答案,但它不会促进理解【参考方案7】:

这是你的代码

$q = $this -> db
       -> select('id')
       -> where('email', $email)
       -> limit(1)
       -> get('users');

试试这个

$id = $q->result()[0]->id;

还是这个,更简单

$id = $q->row()->id;

【讨论】:

【参考方案8】:

echo $this->db->select('title, content, date')->get_compiled_select();

【讨论】:

【参考方案9】:
public function getSalary()
    
        $this->db->select('tbl_salary.*,tbl_employee.empFirstName');
        $this->db->from('tbl_salary');
        $this->db->join('tbl_employee','tbl_employee.empID = strong texttbl_salary.salEmpID');
        $this->db->where('tbl_salary.status',0);
        $query = $this->db->get();
        return $query->result();
    

【讨论】:

【参考方案10】:

下面是代码示例:

public function getItemName()

    $this->db->select('Id,Name');
    $this->db->from('item');
    $this->db->where(array('Active' => 1));
    return $this->db->get()->result();

【讨论】:

以上是关于CodeIgniter 选择查询的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的 ReferenceError:$ 未定义 - Datepicker - Codeigniter 3

无法让 echo form_open 工作 - CodeIgniter

codeigniter 3 - 删除 index.php:Linux 上的错误 404,但在 Windows 上工作正常

CodeIgniter 选择查询

如何将此codeigniter查询转换为选择更新

codeigniter 选择查询的问题