2010-08-01 5 views
0

cakePHP 1.26을 사용하고 있습니다.
테이블을 업데이트 할 때 반환되는 값은 무엇입니까?

$c = "helloworld"; 
$q="UPDATE user SET avatar='{$c}' WHERE user_id='999999'"; 
$result=$this->Test->User->query($q); 

if($result==true){echo "success";} 
else{echo "failed";} 

내가 표가 성공적으로 업데이트 한 것으로 나타났습니다,하지만 난 여전히 메시지를 "실패"보았다
나는 코드 줄을 사용하여 표를 업데이트하려고했다.
$ result의 값이 True 또는 False가 아닌 것으로 보입니다.

나는 잘 모른다.

답변

3

query() SQL 쿼리에서 결과 집합을 반환합니다. 당신은 성공과 실패의 결과를 얻지 못할 것입니다. 즉, 어쨌든 query()을 사용하면 안됩니다. 이 기능이 있습니다. saveField()이라고하며 실패하면 false를 반환합니다.

$this->Test->User->id = 999999; 
$result = $this->Test->User->saveField('avatar', $c); 
if ($result !== false) echo "success"; 
else echo "failed"; 

다른 모델에 갈 이유가 없다 query()를 사용하여 주장합니다. 그냥 SQL 쿼리를 실행합니다. 이것은 당신이 쓴대로 잘 작동 :

$this->query($q); 

덧붙여, if ($result == true) 중복 일반적으로 빈약 한 형태로 간주됩니다. 단지 if ($result)은 동일하게 작동합니다.

+0

아마도'$ this-> Test-> User-> saveField()'...를 의미합니다. Cake의 ORM을 사용하지 않을 이유가 없습니다. – deceze

+0

도움이됩니다. 고마워, 마카 막다. – user327712

+0

D' oh! 맞아, 나는'$ this-> Test-> User-> saveField'를 의미했다. 지금 편집 중입니다. – macamatic

1

SQL에 대한 업데이트 쿼리는 행 수를 업데이트하여을 반환합니다. 따라서 bool이 아닌 정수가 반환 될 수 있습니다.

1

테이블이 업데이트 된 후 영향을받은 행 번호를 반환합니다. 그래서이 함수를 "mysql_affected_rows"라고 부르면 쿼리가 끝난 후 영향받은 행을 얻고, 0보다 크면 쿼리가 성공적으로 실행되었음을 의미하고 0이면 업데이트가 수행되지 않습니다.

+0

oops! 당신은 cakephp를 사용하고 있습니다. 여기 어떻게해야하는지 쿼리입니다. $ c = "helloworld"; $ q = "UPDATE 사용자 설정 avatar = '{$ c}'WHERE user_id = '999999'"; if ($ this-> Test-> User-> query ($ q)) 에코 "성공"; } else {echo "failed"; 참고 } ################################ 그것은 당신에게있는 행의 ID를 반환 업데이트 중입니다 $ this-> Test-> User-> id – dip1232001

+0

에 의해 얻을 수 있습니다. 귀하의 정보에 대해 user_id가 테이블 사용자의 기본 키라고 가정하고 있지만 cakephp를 사용하는 경우 을 사용해야합니다. id와 같은 모든 기본 키 다음과 같은 쿼리를 작성할 수 있습니다. $ this-> Test-> User-> id = 99999; $ this-> Test-> User-> set ('avatar', 'helloworld'); if ($ this-> Test-> User-> save()) { echo 'success'; } else { echo 'faliure'; } – dip1232001

+0

도와 주셔서 감사합니다. – user327712