2015-01-22 4 views
0

Я попытался обновить значение столбца с помощью команды sql, но он показывает общий сбой. Ниже приведен мой код для обновления:Обновление с помощью запроса builder in не работает

$name = 'ABC'; 
$id = 2; 
$command = Yii::$app->db->createCommand() 
    ->update('companies', ['company_name' => $name], 'company_id ='.$id.''); 
$result = $command->queryAll(); 

Когда я исполню этот код, ниже показано сообщение.

SQLSTATE [HY000]: Общая ошибка SQL, выполняется было: UPDATE companies SET company_name = 'ABC' WHERE company_id = 2

Error Info: Array ( [0] => HY000 )

Я не могу понять почему. Кто-нибудь знает, что я здесь делаю неправильно?

UPD

$command = Yii::$app->db->createCommand() 
    ->update('companies', ['company_name' => $name], 'company_id ='.$id.'')->execute(); 

Невозможно использовать $command->queryAll() с командой обновления.

ответ

0

В коде содержится несколько ошибок.

Прежде всего, почему вы используете queryAll() с операцией UPDATE? Удалить эту строку:

$result = $command->queryAll(); 

Вторая ошибка - отсутствует вызов execute() команды. Должно быть:

$command = Yii::$app->db 
    ->createCommand() 
    ->update('companies', ['company_name' => $name], 'company_id ='.$id.'') 
    ->execute(); 

Заканчивать документацию для yii\db\Command, особенно execute() и queryAll() методы.

+0

Я действительно нашел ошибку перед вашим предложением. Спасибо, в любом случае. – sidrat

+0

Отметьте ответ как принятый, чтобы другие могли знать. – arogachev