表中的键列是char(36) utf8_general_ci
//保存没有问题
$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
执行SQL语句失败: SQL语句: SQLSTATE42000:语法错误或访问冲突: 1064您的SQL语法中有错误;检查与MySQL服务器版本对应的手册,以获得在第1行的“key = '3f837af1-8a16-11e4-b111-00241d5e096e‘LIMIT 1”附近使用的正确语法。
0 C:\xampp\htdocs\framework\db\CDbCommand.php(415):CDbCommand->query(‘fetch’,数组,数组)#1 C:\xampp\htdocs\framework\db\ar\CActiveRecord.php(1351):CDbCommand->queryRow()#2 C:\xampp\htdocs\framework\db\ar\CActiveRecord.php(1456):CActiveRecord->C:\xampp\htdocs\framework\db\ar\CActiveRecord.php(1456):(Object(CDbCriteria))#3 C:\xampp\htdocs\agahi\protected\controllers\ImageController.php(34):CActiveRecord->find('key = :key',数组)#4 C:\xampp\htdocs\framework\web\actions\CInlineAction.php(49):图像控制器->actionUploadImage()#5 C:\xampp\htdocs\framework\web\CController.php(308):CInlineAction->runWithParams(Array)#6 C:\xampp\htdocs\framework\web\CController.php(286):CController->runAction(Object(CInlineAction))#7 C:\xampp\htdocs\framework\web\CController.php(265):CController->runActionWithFilters(Object(CInlineAction),数组)#8 C:\xampp\htdocs\framework\web\CWebApplication.php(282):控制器->运行(‘UploadImage’)#9 C:\xampp\htdocs\framework\web\CWebApplication.php(141):CWebApplication->runController('image/UploadIma...')#10 C:\xampp\htdocs\framework\base\CApplication.php(180):CWebApplication->processRequest()#11 C:\xampp\htdocs\agahi\index.php(13):CApplication->run()#12 {main}
发布于 2014-12-23 08:40:32
问题是,您已经使用保留的mySql关键字'key‘作为列名。这就是产生语法错误的原因。最好将列重命名为与“key”不同的内容,例如“key1”或“key_ad”。
在mySql中,您仍然可以通过使用‘“对select语句中的select语句进行转义来执行名为'key’的列的查询,我不确定您是否可以在Yii中这样做,您应该尝试它。
但是最好的解决方案是重新命名列,以后不要使用保留字作为列名。
https://stackoverflow.com/questions/27609756
复制相似问题