>  기사  >  백엔드 개발  >  yii 매개변수를 사용한 업데이트 작업, 업데이트 실패, 매우 이상함

yii 매개변수를 사용한 업데이트 작업, 업데이트 실패, 매우 이상함

WBOY
WBOY원래의
2016-09-21 14:13:111097검색

Yii 프레임워크 1.1을 사용하는 초보자입니다. 오늘 데이터베이스 DAO의 CRUD 업데이트 작업을 수행할 때 문제가 발생했습니다.

yii 매개변수를 사용한 업데이트 작업, 업데이트 실패, 매우 이상함
은 데이터베이스 테이블의 이름 값이 lishenglong인 레코드를 스마트로 업데이트하겠다는 의미입니다.

yii 매개변수를 사용한 업데이트 작업, 업데이트 실패, 매우 이상함
즉, 일괄 업데이트하면 다음 4행의 레코드가 업데이트되는데, 그렇지 않습니다.
실행 결과 첫 번째 행만 업데이트되는 상황입니다. ? ?
실행된 sql문을 보기 위해 로그를 켜봤습니다.

yii 매개변수를 사용한 업데이트 작업, 업데이트 실패, 매우 이상함

yii 매개변수를 사용한 업데이트 작업, 업데이트 실패, 매우 이상함

이유를 찾았습니다. 매개변수를 바인딩할 때 업데이트 조건 name='lishenglong'이 덮어씌워졌습니다. 내 업데이트 조건은 name='lishenglong'이었지만 구문 분석하면 name='smart'가 되었습니다. 실제로는 업데이트 조건이 아니라 업데이트하려는 새 값입니다. 고생하신 이모님께도 이유도 물어보시고 해결방법도 알려주세요~

답글 내용:

Yii 프레임워크 1.1을 사용하는 초보자입니다. 오늘 데이터베이스 DAO의 CRUD 업데이트 작업을 수행할 때 문제가 발생했습니다.

yii 매개변수를 사용한 업데이트 작업, 업데이트 실패, 매우 이상함
은 데이터베이스 테이블의 이름 값이 lishenglong인 레코드를 스마트로 업데이트하겠다는 의미입니다.

yii 매개변수를 사용한 업데이트 작업, 업데이트 실패, 매우 이상함
즉, 일괄 업데이트하면 다음 4행의 레코드가 업데이트되는데, 그렇지 않습니다.
실행 결과 첫 번째 행만 업데이트되는 상황입니다. ? ?
실행된 sql문을 보기 위해 로그를 켜봤습니다.

yii 매개변수를 사용한 업데이트 작업, 업데이트 실패, 매우 이상함

yii 매개변수를 사용한 업데이트 작업, 업데이트 실패, 매우 이상함

이유를 찾았습니다. 매개변수를 바인딩할 때 업데이트 조건 name='lishenglong'이 덮어씌워졌습니다. 내 업데이트 조건은 name='lishenglong'이었지만 구문 분석하면 name='smart'가 되었습니다. 실제로는 업데이트 조건이 아니라 업데이트하려는 새 값입니다. 고생하신 이모님께도 이유도 물어보시고 해결방법도 알려주세요~

Yii1.1 클래스 참조 매뉴얼에서 system.db.CDbCommand의 업데이트 메소드를 확인하세요. 메소드 프로토타입은 다음과 같습니다.

<code>public integer update(string $table, array $columns, mixed $conditions='', array $params=array ( ))</code>

그 중 $params에 특별한 설명이 있습니다

<code>Do not use column names as parameter names here. They are reserved for $columns parameter.</code>

필드 이름을 자리 표시자 이름으로 사용하지 말라는 의미입니다.
해결책은

<code>'name=:cname',array(':cname'=>'lishenglong')</code>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.