1

こんにちは私は少し問題があります

名前でmysqlを検索したい

私は検索モデルにこのコードを持っています

 $this->db->limit($limit, $start);
        $this->db->like("name",$by);    
        $res = $this->db->get('walls');
            if ($res->num_rows() > 0)
                return $res->result();

$by = "megan" の結果; は働いている

しかし、$by = "ミーガンフォックス"; 動かない

mysql名には「ミーガンフォックス」があります。

urldecode を試しましたが、役に立ちませんでした。

私はcodeigniterフレームワークを使用しています..

何か案は?

4

3 に答える 3

2
 $this->db->limit($limit, $start);
        $this->db->like("name",$by);    
        $res = $this->db->get('walls');
            if ($res->num_rows() > 0)
                return $res->result();

句の例BOTHLEFT、、を追加することをお勧めしRIGHTますlike()

$this->db->like("name",$by,'BOTH'); // left and right wild card %name%
$this->db->like("name",$by,'LEFT'); // left  wild card %name
$this->db->like("name",$by,'RIGHT'); // right wild card name%

詳細については、 http://ellislab.com/codeigniter/user-guide/database/active_record.htmlをご覧ください。

于 2013-03-16T14:58:15.537 に答える
1

$by最初に、次のような方法で変数を個別の値に分割できます。

$by = explode(" ", $by);

そして、このようにlike句を作成してみてください

$this->db->like("name",$by[0]);
$this->db->or_like("name",$by[1]); 

このようなものを生成します

 WHERE name LIKE '%megan%' OR name LIKE '%fox%'

これは、スペースで区切られた に常に 2 つの変数を渡すことを前提としています$by。すべてのケースで機能するように調整する必要があります。たとえば、に渡される変数が 1 つしかない場合は、$byそれをチェックする必要があります。

また、名前と姓をテーブル内の 2 つの別個のフィールドに分割し、それぞれに特定の名前または姓を照会するよりもかなり時間がかかることに注意してください。最適化が必要な場合は、これを行う必要があります。

于 2013-03-16T21:38:57.510 に答える
0

urldecode関数を使用してこれを解決しますこれをモデルに試してください

    $by= urldecode($by);

    $this->db->limit($limit, $start);
    $this->db->like("name",$by);    
    $res = $this->db->get('walls');
        if ($res->num_rows() > 0)
            return $res->result();
于 2013-03-17T06:38:26.557 に答える