2016-10-19 4 views
1

私は最初のテーブルを持つデータベースを持っている、表は以下の例のように3つのフィールドを含むが、私はの1を取ることによって、クエリを作成する方法を理解していない特徴いくつかの単語を持つnameフィールドのデータと?モデルください

public function get_name($name){ 

    $sql = "SELECT * FROM school 
      WHERE name.name = '".$name."'"; 

    return $this->db->query($sql)->row_array(); 
} 
+0

Uは配列を使用する必要があります。私はそう思う! –

+0

あなたの期待した結果を示してください – scaisEdge

+1

あなたのデータを格納する方法を変更する必要があるかもしれないと思う。 '01 - smith - III、02 - john - III'というように、それぞれの名前の列があります。あなたは名前とクラスで行を選択することができます。 – Blinkydamo

答えて

1

利用FIND_IN_SET()機能上の

表の学校

id |   name  | class 
-------------------------------------- 
01 | smith, john, billy | III 
02 | ana, jach, georgre | IV 

コントローラ

//suppose I want to take the data 'smith' on the field name 
    $name = $this->input->post('name'); 
    $data = $this->models->get_name($name); 
    $this->load->view('layout/wrapper', $data); 

例のクエリは、(このタスクを達成するためにここではその代わりに、生のコードを実行するCIの方法です)

public function get_name($name){ 
    $query = $this->db->select('*')->from('school')->where('FIND_IN_SET(' . $name . ',name) > 0', NULL, FALSE)->get(); 
    return $query->row_array(); 
} 

は、だから今、あなたがsmithを送信する際には、最初の行を返します。

+1

ありがとう@Rejoanul Alam私の問題は解決されました。 –

-1

$ sqlを= "学校名LIKE SELECT * FROM?"。

$ query = $ this-> db-> query($ sql、 '%、'。$ this-> db-> escape_like_str($ name)。 '、%');

これがあれば名前=「名前、」、学校のテーブルからフィールドを返します。

+0

これは間違っています:1)SQL注入に対する保護はありません( '$ name'は' $ _POST'からまっすぐになります)2)部分名と一致する結果が得られます( '$ name === 'org')3)コード... – Jost

関連する問題