【问题标题】:Codeigniter DB query phpCodeigniter 数据库查询 php
【发布时间】:2014-01-17 03:23:23
【问题描述】:

我有以下代码:

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

上面的代码用于分割字符串中的单词。我如何进行数据库查询,其中我获取名称的 id(我分隔的字符串中的单词)。

假设,我有一个价格表

表格有 2 个列,项目名称和 id

如何解析数据库查询,其中我需要获取列出的项目名称的 ID。

【问题讨论】:

    标签: php database codeigniter


    【解决方案1】:

    我猜你想得到爆炸的$name 的ID,你可以使用$this-&gt;db-&gt;where_in()

    示例:

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

    在此处查看文档:Where In Query

    所以你的代码的下一行可能看起来像这样:

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

    那么你可以使用$resultby

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

    【讨论】:

    • String:Bike Car 爆炸后就是这个了。 string[0]-bike string[1]-car 那么它是否假设自己是一个数组呢?
    • 你可以转换分解字符串的输出以适应where_in命令的数组输入:D @user3205047
    • 说字符串是这样的。 Bike 1 Car 2 我需要获取自行车和汽车的 ID。我必须在数组位置均匀的地方循环它吗? [0]->bike [1]->1 [2]->car [3]->2 这就是 $space 的意图。
    • 您是否熟悉此错误?错误号:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行 SELECT id WHERE componentname IN ('potato') 附近的 'WHERE componentname IN ('potato')' 附近使用正确的语法文件名:C: \www\KG1\system\database\DB_driver.php
    【解决方案2】:

    您可以简单地使用 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 循环遍历每个键并将每个键转换为整数。

    【讨论】:

      猜你喜欢
      • 2015-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      • 2012-03-21
      • 1970-01-01
      • 2015-03-13
      相关资源
      最近更新 更多