从Codeigniter Query返回一个单元格

时间:2013-04-29 04:48:40

标签: sql codeigniter

我想查询一个表,只需要返回一个单元格。现在我能想到的唯一方法就是:

 $query = $this->db->query('SELECT id FROM crops WHERE name = "wheat"');
 if ($query->num_rows() > 0) {
     $row = $query->row();
     $crop_id = $row->id;
 }

我想要的是,因为我无论如何都选择'id',因为那是结果。 IE:$ query ='cropId'。

有什么想法吗?这甚至可能吗?

2 个答案:

答案 0 :(得分:1)

当然有可能。只需在查询中使用AND

$query = $this->db->query('SELECT id FROM crops WHERE name = "wheat" AND id = {$cropId}');

或者你可以使用提供的Active Record类的原始力量:

$this->db->select('id');
$this->db->from('crops');
$this->db->where('name','wheat');
$this->db->where('id',$cropId);
$query = $this->db->get();

如果您只想要整栏中的cropId

foreach ($query->result()->id as $cropId)
{
    echo $cropId;
}

尝试一下,我不确定它是否会起作用:

$cropId = $query->first_row()->id;

答案 1 :(得分:0)

请注意,您要交换引号:使用“代表您的PHP字符串,使用'代表您的SQL字符串。首先,它与PostgreSQL和其他检查此类内容的数据库系统不兼容。

否则,正如Christopher告诉您的那样,您可以在查询中测试裁剪标识符。只有在PHP中的'...'之间定义一个字符串时,变量才不会在字符串中被替换。所以他展示了错误的PHP代码。

"SELECT ... $somevar ..."

会更好。

然而,编写这样的字符串存在一个安全问题:它非常危险,因为$ somevar可以代表一些额外的SQL并完全转换你甚至不想考虑的东西。因此,克里斯托弗提到的Active Record更加安全。