2012-02-09 14 views
3

誰もがユーザーdifferetパラメータを選択し、その基盤の上に、私は構文を持っていると思う私のクエリは、Zend Frameworkのクエリでの間に配置する方法を

$user = new Zend_Session_Namespace('user'); 
$phone_service_id = $user->phone_service_id; 

$start_date = $this->_getParam('start_date'); //02/07/2012 
$end_date = $this->_getParam('end_date');  //02/21/2012 
$option_call_log = $this->_getParam('option_call_log'); //COLUMN NAME 
$option_call_log_asc_desc = $this->_getParam('option_call_log_asc_desc'); //ASC/DESC 

を作る状況持っZF.iに応じて、このクエリを修正しますクエリでエラーが発生しました。こちらをご覧ください。

$select = $DB->select() 
     ->from('CALL_LOG', array('caller_name','call_number','call_start_time','call_duration','call_direction')) 
     ->where('phone_service_id = ?', $phone_service_id) 
     ->where(DATE_FORMAT(date_created, '%m/%d/%Y') BETWEEN $start_date AND $end_date) 
     ->order($option_call_log $option_call_log_asc_desc) 
     ->limit(0,9); 

この問題は何ですか? BETWEEN句

+0

ここで(DATE_FORMAT(date_created、 '%m /%d /%Y')BETWEEN $ start_date AND $ end_date) ' - >にいくつか引用符がありません。これにより、PHPの構文エラーがスローされてからdbに照会するまでに時間がかかります。 ( "DATE_FORMAT(date_created、 '%m /%d /%Y')BETWEEN $ start_date AND $ end_date") 'のようなものではないでしょうか? (二重引用符で囲まれています) –

+0

エラーは何ですか?そして 'echo $ select'を試して、あなたが見つけたクエリを取得してmysqlで実行してみてください。 –

+0

実際、 ' - > order()'節の中に引用符が必要なようです。 –

答えて

2

ザ・が含まれており、正しい方法を以下に示します。

$select = $DB->select() 
     ->from('CALL_LOG', array('caller_name','call_number','call_start_time','call_duration','call_direction')) 
     ->where('phone_service_id = ?', $phone_service_id) 
     ->where("DATE_FORMAT(date_created, '%m/%d/%Y') >= ?", $start_date) 
     ->where("DATE_FORMAT(date_created, '%m/%d/%Y') <= ?", $end_date) 
     ->order("".$option_call_log." ".$option_call_log_asc_desc) 
     ->limit(0,9); 

は、上記のコードを試してみて、あなたの問題が解決されます。

+1

私はその間に働いていると思っていません。シンタックスはgr8です –

+1

私は答えに変更を加えました。だから今それをチェックしてください。 –

+0

thanx私はすでにそれをしています –

0

zend dbもmagentoで使用されているので、私は方法を見つけました。

$sql = $read->select() 
       ->from(array('g' => $res->getTableName('geoloc'))); 

     $whereSql = "INET_ATON('{$remoteAddr}') BETWEEN g.start AND g.end"; 

     $sql = $sql->where($whereSql); //echo $sql;exit; 
     $result = $read->fetchRow($sql); 

出力は以下のようになります。

gをSELECT * FROM geolocg AS WHERE (INET_ATON('41 .98.30.186' )g.startとg.end間)

願っています。

関連する問題