Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Zend_Db_Table_Abstract возвращает пустой массив


Автор: NewDima 26.8.2009, 17:27
Реализую модель зенда, наследуюсь от Zend_Db_Table_Abstract.
Конструктором создаю запрос, запускаю - выдает пустой массив:
Код

    $select = $this->getAdapter()->select();
    $select->from($this->_name, array('word', 'mrp_roots_id'));
    foreach ($this->_words as $word) {
        $select->orWhere('word=?', $word, 'string');
    }     
    $knowns = array_values($select->query()->fetchAll()) ;

Вывожу запрос с assemble, полученную строку исполняю через phpMyAdmin - выдает, как и должен, одно значение.Не могу понять, как так, почему через зенд выдает пустой массив в $knowns, а через админку работает нормально, запрос то один и тот же... smile 

Автор: NewDima 26.8.2009, 17:46
Код

    mysql_connect('localhost', 'root', '');
    mysql_select_db('site');
    $d = mysql_query($c=$select->assemble());echo $c;
    echo mysql_num_rows($d);

та же история, говорит 0 записей. Я конечно давно не спал, но чтобы так тупить...

Автор: solenko 26.8.2009, 17:52
Может таки запрос запостите?

Автор: NewDima 26.8.2009, 18:10
Да запрос простой
Код

SELECT `id`
FROM `mrp_morphems`
WHERE (
word = 'КРЫСА'
)

Заметил закономерность, когда этот запрос вбиваю в админке, рядом со значением, где чекбокс, карандаш (а должен быть еще знак удаления) у меня стоит вопросительный знак. Меняю запрос на другую форму:
Да запрос простой
Код

SELECT `word`
FROM `mrp_morphems`
WHERE (
id = 1
)

выводит туже запись, только без вопросительного знака. Замечу, что оба запроса по сути отображают одну и ту же запись.
Когда навожу курсор на вопросительный знак, всплывает подсказка "Вам необходимо указать первичный ключ этой таблицы". 
Таблица:
Код

CREATE TABLE `mrp_morphems` (
  `id` int(11) NOT NULL auto_increment,
  `word` varchar(80) NOT NULL,
  `mrp_roots_id` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `word` (`word`)
)

Автор: solenko 26.8.2009, 18:12
Скорее всего проблемма с кодировками. Попробуйте то же с word латиницей

Автор: NewDima 26.8.2009, 18:15
solenko, ты прав, с инглишем прокатило. Только я все-равно принцип понять не могу, где кодировка то помешала? =(

Добавлено через 2 минуты и 40 секунд
Разобрался, придется через iconv

solenko, спасибо)

Автор: IZ@TOP 26.8.2009, 18:26
NewDima, зачем iconv? Возможно, стоит задать кодировку соединения?

Автор: NewDima 26.8.2009, 18:38
IZ@TOP, как бы так сказать)) у меня раньше вообще (не знаю как так) проблем с кодировками не было. На этой неделе пошло-поехало.
Может сразу скажешь, как апачу сказать в какой кодировке отдавать файлы? Клиенту то я знаю, как говорить, в какой читать (и я полагаю отправлять)

Добавлено через 8 минут и 21 секунду
Все, тоже решил, IZ@TOP, и тебе за пинок спасибо)
http://httpd.apache.org/docs/1.3/mod/core.html#adddefaultcharset

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)