сохранить и найти UUID по MySQL и YII

ключевой столбец в таблице — 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

CDbCommand не удалось выполнить инструкцию SQL: SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘key =’ 3f837af1-8a16-11e4-b111-00241d5e096e ‘LIMIT 1’ в строке 1. Выполнен оператор SQL: SELECT * FROM ad t WHERE ключ =: ключ LIMIT 1 (C: \ xampp \ htdocs \ framework \ db \ CDbCommand.php: 543)

0

Решение

Проблема в том, что вы использовали зарезервированное ключевое слово mySql «ключ» в качестве имени столбца. Вот что генерирует синтаксическую ошибку. Лучше всего, чтобы вы переименовали свой столбец в нечто иное, чем «ключ», например ‘key1’ или ‘key_ad’.

В mySql вы все еще можете выполнить запрос со столбцом с именем «key», экранируя его в операторе select с помощью «` », я не уверен, что вы можете сделать это в Yii, вам следует попробовать его.

Но лучшее решение — просто переименовать столбец и не использовать зарезервированные слова в качестве имен столбцов в будущем.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]