0

ドキュメントによると、「none」の3番目のパラメーターをlikeメソッドに渡すと、like検索クエリでのワイルドカード文字の使用が排除されます。

私はこれをやっています、ここで$ search =='test_username':

$this->db->like('username', $search, 'none');
$this->db->limit(1);
$q = $this->db->get('customers')->row();
var_dump($this->db->last_query());exit;

これが画面にエコーされるのを期待しています。

SELECT * FROM (`ci_customers`) WHERE `username` LIKE 'test_username' LIMIT 1

しかし、私は代わりにこれを取得しています:

SELECT * FROM (`ci_customers`) WHERE `username` LIKE '%test_username%' LIMIT 1

メソッドが3番目のパラメーターを無視しているか、何か間違っているようです。何か案は?クエリを書き出してquery()メソッドを使用することもできますが、興味があります。

4

1 に答える 1

1

「none」のコードは2.1.0バージョンに含まれていないようです。https://github.com/EllisLab/CodeIgniter/blob/v2.1.0/system/database/DB_active_rec.php#L639の行649-692をご覧ください。

次に、2.1.3バージョンの664行目を見てください:https ://github.com/EllisLab/CodeIgniter/blob/2.1.3/system/database/DB_active_rec.php#L639

アップグレードするか、これをDB_active_rec.phpファイルに追加する必要があります。

...
if ($side == 'none')
{
  $like_statement = $prefix." $k $not LIKE '{$v}'";
}
...
于 2012-12-21T15:33:26.417 に答える