2014-11-05 4 views
0

나는 Zend_Db_Adapter를 사용하여 업데이트 쿼리를 작성하려고하지만 쿼리의 에코를 만들 때 업데이트하려는 값은 여전히 ​​"?"입니다.? 젠드 업데이트로 값 대신

$this->_db->beginTransaction(); 
try { 
    foreach($a_result as $k => $j){ 
     $foo = ($j['val1'] >= $j['val2']) ? 1 : 0 ; 
     $a_data = array('bar' => $foo); 
     $where['id = ?'] = $k; 
     $update = $this->_db->update($this->_name, $a_data, $where);          
    } 
    $this->_db->commit(); 
} catch (Exception $e) { 
    $this->_db->rollBack(); 
    echo $e->getMessage(); 
} 

내 모든 querys는 다음과 같습니다 : 나는 값 $ foo는을 확인, 난 항상 1 개 또는 0 내 코드가

  • UPDATE foo SET bar =? WHERE (id = 39)
  • 업데이트 foo SET bar =? WHERE (ID = 40)
  • [...]는 게다가 :)

    $a_data = array(
          'bar' => $foo 
    ); 
    
    $_where = array(); 
    $_where[] = "id = '" . $k . "'"; 
    

    도움이된다면이 코드는 나를 위해 작동

+0

$ foo의 값을 부울로 생각하는지 확인하십시오. $ foo의 값을 캐스팅해야 할 수도 있습니다. – almaruf

+0

$ foo를 int로 간주합니다. – Snabow

답변

0

, 루프 안에 넣어 볼려고, 나는 당신의 문제가 $에 있다고 생각합니다, 그것은 이상한 방식으로 쓰여졌습니다. 나는 보통 내가 어쨌든

$where = $this->_yourTable->getAdapter()->quoteInto('id = ?', $id) 

을 사용 선택

귀하의 경우에는
->where('ID = ? ', $k) 

를 들어, 사용, 첫 번째는 간단합니다!

+0

감사합니다.이 구문이 더 효과적입니다. 그런데 내가 사용하는 synthax는 Zend 1.x 문서의 하나의 쇼입니다. – Snabow

+0

젠드 1.12도 사용하고 있습니다.하지만 솔직히이 구문이 사용 된 이후로는 구문을 시도한 적이 없었습니다. 나는 더 좋은 길을 제외 할 수는 없지만, 이것이 당신에게 도움이 되었기 때문에 기쁩니다. :) – Gounemond