Команда Yii не работает

0

Мои строки таблицы - это данные (время даты), имя (var char), адрес (var char)

$command=Yii::app()->db->createCommand();
$command->from('news_hamkar');
$command->where(date('Y-m-d').'  < DATE_ADD(data, INTERVAL -2 DAY)');        
$command->order('news_hamkar.data desc');
$command->queryAll();

Почему команда Yii работает правильно?

  • 1
    не работает? это широкий термин. опубликовать неожиданные результаты.
  • 0
    Переписано для ясности.
Теги:
yii

2 ответа

0
Лучший ответ

Дата не цитируется, в результате чего ваше условие является неправильным. Если запустить сегодня, дата будет равна 2015-03-07. Однако MySQL будет интерпретировать это как арифметику и в конечном итоге со следующим условием:

2005 < DATE_ADD(data, INTERVAL -2 DAY)

Чтобы этого избежать, передайте дату в качестве параметра:

$command=Yii::app()->db->createCommand();
$command->from('news_hamkar');
$command->where(':date < DATE_ADD(data, INTERVAL -2 DAY)');        
$command->order('news_hamkar.data desc');
$command->queryAll(true,array('date'=>date('Y-m-d'));
  • 0
    Спасибо это право
  • 0
    Рад помочь. Я сам несколько раз делал эту ошибку, поэтому стал более проницательным в ее обнаружении.
0

Я вижу 2 проблемы с кодом, о котором идет речь. Я предполагаю, что вы пытаетесь использовать тот же код в своем приложении.
1. вам не хватает инструкции select.
2. Где вы сохраняете результаты, возвращаемые queryAll()? попробуй это

$command=Yii::app()->db->createCommand();
$command->select('*');//added select statement
$command->from('news_hamkar');
$command->where(date('Y-m-d').'  < DATE_ADD(data, INTERVAL -2 DAY)');        
$command->order('news_hamkar.data desc');//save results to $results
$results=$command->queryAll();
  • 0
    Спасибо, но нет работы?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню