Zend Framework Нарушение кардинальности: 1241 Операнд должен содержать 1 столбец (и) - PullRequest
5 голосов
/ 08 октября 2009

У меня проблема с sql, и я не знаю, как ее исправить, я пробовал несколько вещей, но ... вы знаете. Так вот мой запрос:

    /**
 * Returns a list with all the months for the archive
 *
 * @return array
 */
public function Archive()
{
 $q = "SELECT DISTINCT MONTH(`data`) AS `month`,YEAR(`data`) AS `year` FROM `posts` ORDER BY `data` DESC";
 $all = $this->fetchAll($q);
 if (count($all) > 0) {
  foreach ($all as $info) {
$months[] = array('month_name'=>$this->months($info['month']),'year'=>$info['year'],'month'=>$info['month']);
  }
  return $months;
 }else{
  return false;
 }
}

И моя ошибка:

Неустранимая ошибка: необработанное исключение «Zend_Db_Statement_Exception» с сообщением «SQLSTATE [21000]: нарушение количества элементов: 1241 Операнд должен содержать 1 столбец (столбцы)» в

Любая помощь?

Ответы [ 4 ]

4 голосов
/ 26 октября 2012

У меня была та же проблема, в конце концов я обнаружил, что отправляю неправильное значение для столбца. Я отправил 2 значения для столбца. Итак, проверьте значение ваших параметров, которые передаются вашей функции.

3 голосов
/ 08 октября 2009

Вы пропускаете этап в процессе? Строка запроса, как показано ниже:

    /**
 * Returns a list with all the months for the archive
 *
 * @return array
 */
public function Archive()
{
 $q = "SELECT DISTINCT MONTH(`data`) AS `month`,YEAR(`data`) AS `year` FROM `posts` ORDER BY `data` DESC";
 $stmt = $db->query($q);
 $all = $stmt->fetchAll(); 
 if (count($all) > 0) {
  foreach ($all as $info) {
$months[] = array('month_name'=>$this->months($info['month']),'year'=>$info['year'],'month'=>$info['month']);
  }
  return $months;
 }else{
  return false;
 }
}
1 голос
/ 21 января 2011

Я работал так же, как и вы, но в конце концов решил это, используя объект Zend_Db_Select вместо строки запроса:

$select =  $this->getDbTable()->select(); // $this->select(); // 
$select->from('gallery', '*');
$select->where('id_category = ?', $id_category);
$select->where('active', 1);

$resultSet = $this->getDbTable()->fetchAll($select);

Отредактировано: с отступом для отображения разметки кода.

0 голосов
/ 23 июля 2012

У меня такая же проблема. Похоже, это Zend Bug.

Источник: http://framework.zend.com/issues/browse/ZF-3311

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...