【问题标题】:Codeigniter where query customisationCodeigniter where 查询自定义
【发布时间】:2012-12-06 11:26:06
【问题描述】:

首先,我的数据库表字段中有以下详细信息作为 'company_name'=>'Test Company'。我想在比较输入数据(“Test Company”或“ TestCompany') ,因为该字符串(测试公司)的存在。请提出一个查询以查找存在或不存在。我使用了以下内容,但它不适用于所有场景。

$companyname="TestCompany";

$this->db->select("*"); 
    $companynames=str_replace(' ', '', $companyname);   
    $where = "company in ('$companyname','$companynames')" ;
            // $where = "'company' = $companyname OR 'company' = $companynames'";
    $this->db->where($where);
    $query=$this->db->get('users');
    $val= $query->result_array();
    if(empty($val)){ 
      echo '1';//non-existence  of 'TestCompany' and 'Test Company'
    }
    else {
     echo '2';//existence of 'TestCompany' or 'Test Company'
  }

即使数据库中存在“Test Company”,上述代码也始终打印“1”。

注意:问题是当我选择“TestCompany”时,查询将是这样的

$where = "'company' = TestCompany OR 'company' = TestCompany'";

但数据库包含“测试公司”,查询没有返回结果。我想解决这个问题。

【问题讨论】:

    标签: php mysql codeigniter


    【解决方案1】:

    你的意思是这样的:

    $companyname="Test Company";
    $companyNameTmp = str_replace(' ', '', $companyname);   
    
    $this->db->select("*"); 
    $this->db->where('company_name', $companyname);
    $this->db->or_where('company_name', $companyNameTmp); 
    ....
    

    或者

    $where = "company_name='$companyname' OR company_name='$companyNameTmp'";
    
    $this->db->where($where);
    

    【讨论】:

    • 那是因为,您使用的是 $companyname="TestCompany";测试和公司之间没有空格,所以 str_replac()'ing 它会导致相同的字符串.. 那不应该是 $companyname="Test Company";中间有空格..?
    • 是的,我知道。但我必须使用不带空格的字符串来跟踪匹配。
    【解决方案2】:
    $companyNameTmp =  str_replace(' ', '', $companyname);
    $query = mysql_query("
        SELECT * FROM `items` WHERE  REPLACE(`companyname`,' ','')='$companyNameTmp'
        ");
    if(mysql_num_rows($query) >0)
    {
        echo 'hi';
    }
    

    REPLACE 不适用于活动记录,因此您必须在正常的 mysql 查询中进行。而不是执行 OR Sudhir 的解决方案,即从传入变量中删除空格更有意义。然后将其与删除空格的数据库字段进行比较。

    【讨论】:

    • 我会检查并通知您。谢谢
    • 好的,刚刚意识到 REPLACE 不适用于活动记录,重写了查询,这应该可以工作,我在我的数据库上进行了测试。
    猜你喜欢
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多