2014-01-26 4 views
1

Codeigniter에서 이상한 문제가 발생했습니다. 나는 행을 업데이트하는 쿼리를 실행하고 있습니다 :업데이트 쿼리가 해당 행을 업데이트하지 않습니다.

function set_counter($key, $value){ 
    echo "$key : $value => "; 
    $this->db->query("UPDATE counter SET counter.`value` = ? WHERE counter.`key` = ?", array($value, $key)); 
    return $this->db->affected_rows(); 
} 

벤치 마크는이 함수가 호출됩니다 및 쿼리 실행 않음을 보여줍니다

UPDATE counter SET counter.`value` = 1 WHERE counter.`key` = 'left_banner_start_id' 

함수가 반환 '1'1 개 행을 의미하는 업데이트됩니다.

그러나 행이 데이터베이스에 업데이트되지 않습니다 실제의

, value 열은 항상 '0'

내가 잘못 뭐하는 거지 어떤 해결책이다?

편집

: 나는() 내 기능을 종료 할 때

이 문제는, 심지어 괴상 가져가, 행이 실제로 업데이트 될 때, 그렇지 않으면하지 않습니다

function set_counter($key, $value){ 
    echo "$key : $value - "; 
    $this->db->query("UPDATE counter SET counter.`value` = ? WHERE counter.`key` = ?", array($value, $key)); 
    //print_r($this->db->affected_rows()); 
    exit(); 
} 

편집 :

좋아요, 내가 system/core/Output.php에서 exit()를 실행하면 작동합니다 :

// -------------------------------------------------------------------- 

    // Does the controller contain a function named _output()? 
    // If so send the output there. Otherwise, echo it. 
    if (method_exists($CI, '_output')) 
    { 
     $CI->_output($output); 
    } 
    else 
    { 
     exit(); 
     echo $output; // Send it to the browser! 
    } 

하지만 난 (종료하면 $ 출력을 해본 후)를 작동하지 않습니다

// -------------------------------------------------------------------- 

    // Does the controller contain a function named _output()? 
    // If so send the output there. Otherwise, echo it. 
    if (method_exists($CI, '_output')) 
    { 
     $CI->_output($output); 
    } 
    else 
    { 
     echo $output; // Send it to the browser! 
     exit(); 
    } 

편집 :

: 내보기에서

을 방지하고이 라인이

<img src="<?php echo base_url().$recent_ad['photo_thumb']; ?>" width="28" height="27" /> 

다른 관점에서이 하나

<img src="<?php echo base_url().$featured_agent['photo_medium']; ?>" width="84" height="84" /> 

여기서 photo_thumb 및 photo_medium은 데이터베이스의 다른 테이블에있는 열이며 null 값을가집니다. 필자는 컬럼을 채우고 이제는 정상적으로 작동합니다.

하지만 왜? 그 이유는 무엇입니까?

+0

함수에 올바른 값을 인쇄하고 있습니까? –

+0

예. 모든 것이 좋습니다. codeigniter는 쿼리가 오류없이 실행되고 1 행이 db로 업데이트되었음을 ​​보여줍니다. 그러나 실제로는 아무것도 업데이트되지 않습니다. – younis

+0

나는 에코에 따라 "$ key : $ value =>"; –

답변

0

활성 레코드 구문에 대해 코드를 전환하려고 시도 했습니까?

function set_counter($key, $value){ 
    $this->db->where('key', $key)->update('counter', array('value' => $value)); 
    return $this->db->affected_rows(); 
} 
+0

예. 아직 단서 없음. – younis

+0

그러면이 방법이 어디에서 호출되었는지 알려줄 수 있습니다. 문제는 일반적인 업데이트 쿼리이기 때문에 CI 엔진에 문제가되지 않는다는 것입니다. 대부분 잘못된 값입니다. 사실 당신은 photo_thumb과 photo_medium이 다른 테이블에 의해 검색된 데이터라고 말했죠. INNER JOIN을 수행하고 이러한 값을 연결하고이 동일한 쿼리로 counter.key 값을 가져올 가능성이 있습니까? 그 때문에 무언가가있는 INNER를 수행한다면 키가 없어 질 것입니다. –

+0

그건 나를 너무 괴롭히는 것입니다. photo_thumb과 photo_medium은 완전히 관련이없는 열입니다. 쿼리는 이러한 열 또는 심지어 테이블을 사용하여 수행 할 필요가 없었습니다. 그리고 $ key와 $ value는 유효한 필드이고 내부 조인은 사용되지 않습니다. codeigniter는 쿼리가 성공적으로 실행되었음을 보여 주지만 (데이터는 업데이트되지 않습니다) 이것은 벤치 마크에서 얻은 것입니다 : UPDATE counter SET counter.value = 1 WHERE counter.key = 'left_banner_start_id' '그래서 쿼리에 오류가 없습니다. – younis

관련 문제