我想查询一个表,只需要返回一个单元格。现在我能想到的唯一方法就是:
$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'。
有什么想法吗?这甚至可能吗?
答案 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更加安全。