2017-08-10 12 views
0
public function search_between() { 

$min = $this->request->query['min']; 
$max = $this->request->query['max']; 

$conditions = array('Ad.price BETWEEN ? AND ?' => array($min,$max)); 
$ads = $this->Anuncio->find('all',array('conditions' => $conditions)); 
$this->set('ads',$ads); 

} 

警告:strlen()は、パラメータ1が文字列であり、配列が指定されていると想定しています。Cakephp 2.8なぜ私のsearch_between関数が警告を出すのですか?

**Thank's for your help I'm new to asking questions here.** 
+0

などなどの作品は、あなたが')(投稿できます? – bill

+0

配列($ min、$ max)の変数をBetween:配列( 'Ad.price BETWEEN?AND?' =>配列に渡すと、cakephpを表示するという警告がstrlen() $ min、$ max)< - これらの配列は警告を引き起こしますが、理由はわかりません。ありがとう –

+0

リクエストで生成されたsqlをダンプできますか?これはデバッグを開始するのに便利です – Amjo

答えて

0

これを試してみてください。

public function search_between() { 

$min = $this->request->query['min']; 
$max = $this->request->query['max']; 

$conditions = array('Anuncio.price >=' => $min,'Anuncio.price <=' $max)); 
$ads = $this->Anuncio->find('all',array('conditions' => $conditions)); 
$this->set('ads',$ads); 
+0

前にこれらのコードを試してみてください。あなたのコードでいくつかのエラーを修正し、動作させてみてください: 'Anuncio.price <=' <--- and these ----> 'Anuncio.price> =')エラーを表示しますエラー:SQLSTATE [42000]:構文エラーまたはアクセス違反:1064 SQL構文にエラーがあり、動作しません。助けてくれてありがとう。 –

0

あなたはCakePHPのmysqlのクエリを使用することができますが、strlenを `呼び出しされている場合、それは、CakePHPのクエリ

if(!empty($min) && !empty($max)){ 
    $ads = $this->Anuncio->query('SELECT * from Anuncio WHERE Anuncio.price BETWEEN "'.$min.'" AND "'.$max.'"'); 
} 

else{ 
$ads = $this->Anuncio->query('SELECT * from Anuncio'); 
} 
+0

私はあなたのコードを試してみるつもりです。ありがとうございました! –

+0

私はインターネット上でstrlen()が配列をサポートしていないことを読んでおり、配列を渡すと警告が表示されます。 –

+0

私はstrlenをc:\ wamp \ your_project_name \\ lib \ Cake \ Utility \ CakeText.php行221にあるファイルでカウントするように変更する問題を修正し、$ offset = $ pos + strlen($ val);を変更します。 $ offset = $ pos + count($ val);に置き換えます。カウントするためにstrlenを変更するだけで、警告はコードの動作を期待どおりに飛ばします。ヘルプのためのTnx。 –

関連する問題