3

まず、データベース テーブル フィールドに'company_name'=>'Test Company'として次の詳細があります。入力データ ('Test Company' または 'TestCompany' のいずれか) を比較した後、true を返したいのですが、それが存在するためです。文字列 (テスト会社)。存在または非存在を見つけるためのクエリを提案してください。以下を使用しましたが、すべてのシナリオで機能しませんでした。

$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'";

しかし、データベースには「Test Company」が含まれており、クエリは結果を返しません。この状況を解決したいと考えています。

4

2 に答える 2

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);
于 2012-12-06T11:34:00.080 に答える
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クエリで実行する必要があります。入力変数からスペースを削除するだけのORSudhirのソリューションを実行するよりも、より理にかなっています。次に、スペースを削除したデータベースフィールドと比較します。

于 2012-12-06T11:31:47.693 に答える