2010-05-15 2 views
5

내가 뭘하려고입니다 : (프로그래밍)있으며, mysql_affected_rows (1) 더 행이 업데이트되지 않았다하더라도

ID가 뭔가입니다

업데이트 상태 업데이트 행이 오류를 제공하지 않는 경우 : 우리가 찾을 수 없습니다 ID가있는 레코드로, 그렇지 않으면 메시지를 성공으로 보냅니다.

여기서 행을 업데이트했는지 여부를 알기 위해 mysql_affected_rows()를 사용하고 있지만 업데이트 된 행이 없더라도 사용자가 성공 메시지를 받도록 항상 1을 반환합니다.

아무도 말해 줄 수 있습니까?

여기에 코드입니다 :

function update_sql($sql) { 


    $this->last_query = $sql; 

    $r = mysql_query($sql); 

    if (!$r) { 
    $this->last_error = mysql_error();   
    return false; 
    }  
    $rows = mysql_affected_rows(); 
    if ($rows == 0) return true; // no rows were updated 
    else return $rows; } 

이 코드는 echo를 사용하는 경우 true은 "1"로 인쇄하기 때문에 1.

+0

이 문제가 발생한 코드를 알려주십시오. –

답변

4

를 반환합니다. 디버깅을 위해 var_dump()을 사용해 보거나 함수가 0을 반환하도록하십시오. (이 경우에는 더 나은 옵션입니다.)

하나의 작은 메모; 나는 당신이 당신의 코드를 좀 더 읽기 쉽도록 만들어야한다고 생각한다. (당신의 질문에있는 코드가 당신의 파일에있는 코드와 같은 레이아웃을 가지고 있다면).

+0

+1 질문에 정보 부족으로 좋은 교육을받은 추측. –

+0

제안을 주셔서 감사합니다. 나는 그것을 시험해 보겠습니다. 코드는 제 편집자에게 적합하게 보이지만, 여기에 붙여 넣을 때 불편합니다. – happyhardik

+0

좋아,이 경우에는 작은 노트를 무시합니다. –

2

이 그냥 추측입니다 ...

어쩌면 당신의 기능으로는 제외 작품 ... 등 중괄호를 닫는에 대해 별도의 라인을 사용, 들여 쓰기 코드 블록에 시도? 어쩌면이 코드 if ($rows == 0) return true; 조각이 제대로 작동하고 true을 반환하지만 그 값을 정수로 처리 할 수 ​​있습니다 (부울 true는 1로 표시 될 수 있음)? Do : var_dump(uddated_sql('YOUR QUERY'))을 입력하고 부울 true 또는 정수 1 값을 반환하는지 확인합니다.

관련 문제