2014-01-17 38 views
1

我有以下代碼:笨DB查詢PHP的

$spaces=0; 
$str="bike car "; 
for($i = 0; $i < strlen($str); $i++) 
{ 
    if($str[$i]==" ") 
    { 
    $spaces+=1; 
    } 
} 
$names=explode(" ",$str); 

上面的代碼被用於分割字符串內的話。我如何做一個數據庫查詢,其中我得到的名稱(我分離的字符串中的單詞)的ID。

假設,我有一個價格表

表已經可以說2周的cols,項目名稱和ID

我如何解析數據庫查詢,其中,我需要得到列出的項目名稱的ID。

回答

0

我想你想獲得爆炸$name的ID簡單,你可以使用$this->db->where_in()

例如:

$names = array('Frank', 'Todd', 'James'); 
$this->db->where_in('username', $names); 
// Produces: WHERE username IN ('Frank', 'Todd', 'James') 

在這裏看到的documenation:Where In Query

所以你的代碼的下一行也許看起來像這樣:

$names = explode(" ",$str); 
$this->db->select('id') 
     ->where_in('your_table_name',$names); 
$query = $this->db->get(); 
$result = $query->result_array(); 

那麼你可以使用$result通過

foreach($result as $r){ 
    echo 'The id is :'.$r['id']; 
} 
+0

字符串:自行車汽車 我爆炸後,它會是這樣。字符串[0] - 自行車字符串[1] -car 它假設自己是一個數組嗎? – user3205047

+0

那麼你可以轉換分解字符串的輸出以適應'where_in'命令的數組輸入:D @ user3205047 – fawwaz

+0

說這個字符串是這樣的。 自行車1車2 我需要得到的自行車和汽車的id。我必須循環它在陣列位置甚至? [0] - >自行車[1] - > 1 [2] - >汽車[3] - > 2 這是$空間的意圖。 – user3205047

0

你可以簡單的使用array_keys與array_values遍歷你數組鍵和值

//sample array 
Array 
(
    [1334] => Face Towel 
    [4552] => White Socks 
    [3442] => Lotion 
    [6643] => Pants 
    [4432] => foobar 
    [5532] => bar 
) 

$items = implode(',',array_values($array)); //will get the array values 
$itemid = implode(',',array_map('intval',array_keys($array))); //will get the array keys 


$this->db->where_in('items', $items); 
// where items IN ('Face Towel','White Socks','Lotion','pants','foobar','bar') 
$this->db->where_in('itemid', $itemid); 
// where itemid IN (1334,4552,3442,6643,4432,5532) 

注意我用了array_map遍歷每個鍵和投每鍵爲整數。