2013-04-29 34 views
0

我想查詢一個表,只需要返回一個單元。現在我能想到做到這一點的唯一方法是:從Codeigniter查詢中返回一個單元

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

我想是的,因爲我選擇「身份證」,無論如何,對於要的結果。 IE:$ query ='cropId'。

任何想法?這甚至有可能嗎?

回答

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; 
+0

我想從莊稼表中選擇cropId。 – 2013-04-29 04:55:07

+0

@DylanButh,你想選擇一個ID,其中ID等於裁剪表中的ID也?你的身份證是從哪裏來的? – tomexsans 2013-04-29 04:58:51

+0

所以你只需要一個'列'返回,不只是一個單元格? – SomeShinyObject 2013-04-29 04:59:24

0

請注意,您要交換引號:使用「for your PHP strings,and'for your SQL strings。首先,它不會與PostgreSQL和其他檢查這些事情的數據庫系統兼容。

否則,正如克里斯托弗告訴你的那樣,您可以在查詢中測試作物標識符。只有在PHP中定義'...'之間的字符串時,變量纔會在字符串中被替換。所以他顯示了錯誤的PHP代碼。

"SELECT ... $somevar ..." 

會工作得更好。

然而,有書面這樣的字符串一個安全問題:這是非常危險的,因爲$ somevar可以代表一些額外的SQL,完全改變你的SELECT中的東西,你甚至不想去想。因此,克里斯托弗提到的Active Record更安全。

+0

【O RLY?](http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing) – SomeShinyObject 2013-04-29 05:06:25

+1

看起來它,你在這裏掛在該網頁上...不是嗎? 8-) – 2013-04-29 05:09:50

相關問題