2012-12-06 74 views
3

首先,我在我的數據庫表字段中具有以下詳細信息'company_name'=>'Test Company'。我想在比較輸入數據('Test Company'或'TestCompany' '),因爲該字符串(測試公司)的存在。請提出一個查詢來查找存在或不存在。我已經使用了以下內容,但它並不適用於所有場景。Codeigniter查詢定製

$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' 
    } 

即使數據庫中存在'測試公司',上述代碼始終打印'1'。

注意:問題是,當我與「TestCompany」查詢選擇會是這樣

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

但該數據庫包含「測試公司和查詢沒有返回results.I想解決這種情況。

回答

0
$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的解決方案從傳入變量中刪除空格更有意義。然後將其與刪除空格的數據庫字段進行比較。

+0

喜,@裏克·卡爾德龍請把我的問題更新看看。 –

+0

編輯但未經過測試。 –

+0

我會檢查,並讓你知道。謝謝 –

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); 
+0

嗨,@ sudhir請看看我的更新問題。 –

+0

那是因爲,您正在使用$ companyname =「TestCompany」; Test&Company之間沒有空格,所以str_replac()會導致相同的字符串..不應該是$ companyname =「Test Company」;與之間的空間..? –

+0

是的,我知道這一點。但我必須使用沒有空格的字符串來跟蹤比賽。 –