2014-01-17 40 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遍历每个键和投每键为整数。