2015-01-12 29 views
1

我有這樣PHP的foreach使查詢

Array ([12313] => 1 [12312] => 1) 1 

數組的數組鍵是存在於倉庫和值的項目數的項目。

我想檢查的項目和金額實際存在於倉庫數據庫使用PHP。我想也許我可以使用foreach進行每項檢查,但我不知道如何使用foreach。我想提出一個查詢,如:

$query=$this->db->query("SELECT COUNT(*) as amount FROM warehouse where item=12313"); 
$check=$query->row_array(); 
$amt=$check['amount']; 
if($amt>0){ 
    return true; 
} 
else{ 
    return false; 
} 
+0

AR那些解決方案真的適合你嗎?使值12312 => 0,並檢查會發生什麼 –

+0

所有的解決方案檢查只有第一個項目有最小的一個數據 –

+0

我將用工作代碼替換內部代碼。問題中的代碼只是一個描述。我希望得到的主要解決方案是如何在foreach循環中使用數組的鍵和值。:) – user3789191

回答

3
$array=array ('12313' => 1,'12312' => 1); 
foreach($array as $k=>$val) 
{ 
    $query=$this->db->query("SELECT COUNT(*) as amount FROM warehouse where item='".$k."'"); 
    $check=$query->row_array(); 
    $amt=$check['amount']; 
    if($amt>0){ 
    return true; 
    } 
    else{ 
    return false; 
    } 
} 
+0

您的查詢應該用雙引號封裝....並且用單引號bcz包裝$ k,如果它適用於字符串以及int ...而選擇的金額不是全部* –

+0

thnx @IndraKumarS –

+0

爲什麼foreach循環?它只會查詢12312並返回true或false.will不會做任何事情12312 –

1

你是否在尋找類似:

$items = array(
     12313 => 1, 
     12312 => 1, 
    ); 

foreach ($items as $key => $value) : //iterate over array 
    $query = "SELECT COUNT(*) as amount FROM warehouse where item = $key"; 
    $check = $query->row_array(); 
    $amt = $check['amount']; 
    if($amt>0) { 
     return true; 
    } 
    else { 
     return false; 
    } 

endforeach; 
0

試試這個

$arr = array("[12313]" => "1" ,"[12312]" => "2"); 
foreach ($arr as $key=>$value) { 
$query="SELECT COUNT(*) as amount FROM warehouse where item='".$key."'"; 
$check=$query->row_array(); 
$amt=$check['amount']; 
if($amt>0){ 
return true; 
} 
else{ 
return false; 
} 
} 
+0

@ user3789191讓我知道如果它爲你工作:) – Priyank

+0

爲什麼你的查詢不包裹「???????和你的解釋 –

+0

它的作品謝謝你! – user3789191

0
$array = array('12313' => 1, '12312' => 1); 
      foreach ($array as $key => $value) { 

       $this->db->select('COUNT(*) as amount'); 
       $this->db->from('warehouse'); 
       $this->db->where('item', $key); 
       $result = $this->db->get()->row_array(); 

       return ($result['amount'] >= $value) ? TRUE : FALSE; //match no of items 
      // return ($result['amount'] > 0) ? TRUE : FALSE; //OR if just check the count 
      }