2012-04-03 12 views
3

このクエリで何が問題になりますか? このクエリが必要です。Zend Frameworkの更新クエリ

UPDATE user_preferences SET user_preferences_value = '2' 
WHERE user_preferences_name = 'is_user_package_active' 
AND user_id = '$user_id' 
AND phone_service_id='$phone_service_id'; 

クエリが

function Deactivate_Service($user_id,$phone_service_id){ 
      $DB = Zend_Db_Table_Abstract::getDefaultAdapter(); 
      $data = array('user_preferences_value' => 2); 
      $where = "user_preferences_name = 'is_user_package_active' AND user_id = " . (int)$user_id ." AND phone_service_id = ".(int)$phone_service_id; 
      $DB->update('user_preferences',$data, $where); 
     } 

以下ZFクエリに等しく、上記の私は私のZFクエリで0

を取得しています編集する:

public function deactivateserviceAction(){ 
     $this->_helper->viewRenderer->setNeverRender(); 
     $user = new Zend_Session_Namespace('user'); 
     $user_id =$user->user_id; 
     $phone_service_id  = $this->_getParam('phone_service_id'); 
     //$Deactive = new Account(); 
     $DB = Zend_Db_Table_Abstract::getDefaultAdapter(); 
$DB->query("UPDATE user_preferences SET user_preferences_value = '2' 
    WHERE user_preferences_name = 'is_user_package_active' AND user_id = '$user_id' AND phone_service_id='$phone_service_id'"); 
     // $a = $Deactive->Deactivate_Service($user_id,$phone_service_id); 
     // var_dump($a); 

} 

答えて

5

あなたの '更新'あなたのケースでは、以下のsy WHERE句を作成するためのntax:

$data = array('user_preference_value' => 2); 

$where = array(
    'user_preferences_name = ?' => 'is_user_package_active', 
    'user_id = ?' => $user_id, 
    'phone_service_id = ?' => $phone_service_id 
); 

$DB->update('user_preferences', $data, $where); 

ここで問題はデフォルトのアダプタであると思います。接続を設定してもよろしいですか?同じ$ DBオブジェクトでSELECTを正常に実行できますか?あなたのオブジェクト、つまり$ DB-> query( 'ここでのあなたの生のUPDATEクエリ')を使ってプレーンなSQLアップデートを実行して、それが動作するかどうかを調べてみてください。

また、デフォルトのDBを取得するための標準的な方法はZend_Db_Tableからのものですが、これも文法的です。

+0

この場合を除いて、私のDBオブジェクトはプロジェクト全体で動作していますが、なぜこれが動作しないのか分かりません。 –

+0

上記のクエリを試しても動作しません:-( –

+1

SELECTを実行することができない場合は唯一の答えです - あなたのDB接続が、その実行枝で適切に初期化されていない(アプリケーションのどこかで動作するという事実を基にしています)あなたのコードを正確に知らないところで、トレースしてデバッグして – Yuriy