2014-12-22 1 views
0

키 열을 기준으로 UUID를 찾으 문자 (36) utf8_general_ci입니다저장하고 MySQL의 테이블에서 YII

// 문제

$key_Ad= Yii::app()->db->createCommand('select UUID()')->queryScalar(); 
$modelAd->key=$key_Ad; 
$modelAd->save() 

//하지만 문제 발견에

$post=Ad::model()->find("key = :key",array(':key'=>$key_Ad)); 

을 저장하지 않습니다 ----------------------> 오류

CDbException

CDbCommand가 SQL 문을 실행하지 못했습니다. SQLSTATE [42000] : 구문 오류 또는 액세스 위반 : 1064 SQL 구문에 오류가 있습니다. 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오. 'key ='3f837af1-8a16-11e4-b111-00241d5e096e 'LIMIT 1'근처의 라인 1에서 사용하십시오. SELECT * FROM adt WHERE 키 = : 키 LIMIT 1 (C : \ xampp \ htdocs \ framework \ db \ CDbCommand.php : 543)

0 C : \ xampp \ htdocs \ framework \ db \ CDbCommand.php (415) : CDbCommand-> CD1C : \ xampp \ htdocs \ framework \ db \ ar \ CActiveRecord.php (1351) : CDbCommand-> queryRow() # 2 C : \ xampp \ htdocs \ framework \ db CActiveRecord-> find ('key = 1') : \ ar \ CActiveRecord.php (1456) : CActiveRecord-> query (Object (CDbCriteria)) # 3 C : \ xampp \ htdocs \ agahi \ : 5, C : \ xampp \ htdocs \ framework \ web \ CControl (C : \ xampp \ htdocs \ framework \ web \ actions \ CInlineAction.php (49)) : ImageController-> actionUploadImage() # 8 C : \ xampp \ htdocs \ framework \ web \ CController.php (286) : CController-> runAction (Object (CInlineAction)) # 7 C : \ xampp (308) : CInlineAction-> runWithParams CController-> runActionWithFilters (Object (CInlineAction), Array) # 8 C : \ xampp \ htdocs \ framework \ web \ CWebApplication.php (282) : CController-> 실행은 \ htdocs \ framework \ web \ CController.php (265) CWebApplication-> runController ('image/UploadIma ...') # 10 C : \ xampp \ htdocs \ framework \ webcontrol.php (141) # 12 {main}

답변

0

문제가 발생했습니다. 문제가 발생했습니다. 문제가 해결되지 않았습니다. 문제가 발생했습니다. 문제가 해결되지 않았습니다. 예약 된 mySql 키워드 'key'를 열 이름으로 사용했다는 것입니다. 이것이 구문 오류를 생성합니다. 열의 이름을 '키'와 다른 이름으로 변경하는 것이 가장 좋습니다. 'key1'또는 'key_ad'.

mySql에서 'key'라는 열을 사용하여 쿼리를 실행할 수 있습니다. '' '를 사용하여 select 문에서 이스케이프 처리하면 Yii에서이 작업을 수행 할 수 있는지 확실하지 않습니다. 시도해야합니다.

하지만 가장 좋은 해결책은 열의 이름을 바꾸고 나중에 예약어를 열 이름으로 사용하지 않는 것입니다.