TYPO3: запрос exec_SELECT с предложением where

Следующий select возвращает пустой набор результатов, хотя этого не должно быть:

$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'tx_xmluploader_xml_import_tree', 'xml_import_id='.$xml_import_id);

$xml_import_id установлен. И это работает, если я удалю пункт where.

Спасибо


Я до сих пор не понимаю, почему это не работает. Простой обходной путь, предложенный коллегой:

// select all from the db     
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'tx_xmluploader_xml_import_tree');

while( $entry = $GLOBALS['TYPO3_DB']->sql_fetch_assoc() )
{  
   if( $entry['xml_import_id'] == $xml_import_id ) {
      ....
   }    
}

person Astrip    schedule 04.10.2011    source источник
comment
Что именно вы имеете в виду, говоря, что у меня не работает? Пустой набор результатов? Сообщение об ошибке?   -  person Frank Schmitt    schedule 05.10.2011
comment
Он возвращает пустой набор результатов.   -  person Astrip    schedule 05.10.2011
comment
Просто чтобы быть в курсе: какой-либо из этих ответов работает для вас?   -  person Mateng    schedule 21.11.2011


Ответы (2)


Во-первых, убедитесь, что в localconf.php установлено следующее:

$TYPO3_CONF_VARS['SYS']['sqlDebug'] = '1';   
$TYPO3_CONF_VARS['FE']['debug'] = '1';  

Тогда попробуй

$res = $GLOBALS['TYPO3_DB']->SELECTquery('*', 'tx_xmluploader_xml_import_tree', 'xml_import_id='.$xml_import_id);
t3lib_div::debug($res);

Результат — это вывод запроса во внешнем интерфейсе. Затем вы можете выполнить его в MySQL для отладки.

person Mateng    schedule 05.10.2011
comment
Я видел, как t3lib_div::debug(); использовался один раз в бэкэнд-модуле, но во внешнем интерфейсе все, что я получаю, это: | debug |. - person Astrip; 05.10.2011
comment
Тогда значение, которое вы передали для отладки, пусто. Обратите внимание, что я предложил функцию $GLOBALS['TYPO3_DB']->SELECTquery (без префикса exec_). Также попробуйте для теста t3lib_div::debug('Testing debug function'); - person Mateng; 05.10.2011
comment
Результат отладки: SELECT * FROM tx_xmluploader_xml_import_tree WHERE xml_import_id=9. Я выполнил запрос в MySQL, и это сработало. Что может быть не так тогда? :( Спасибо.. - person Astrip; 05.10.2011
comment
Это странное поведение. Может быть, запись относительно (в tx_xmluploader_xml_import_tree) установлена ​​​​как удаленная = 1? Но тогда вы все равно должны увидеть это в своем выводе. Какую версию TYPO3 вы используете? - person Mateng; 05.10.2011

а) убедитесь, что $xml_import_id действительно имеет значение (которое также находится в базе данных)

б) Попробуйте так:

$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
   '*',
   'tx_xmluploader_xml_import_tree',
   "xml_import_id='".$xml_import_id."'"
);

Как вы обрабатываете результат? Как выглядит ожидаемое значение $xml_import_id?

ку Роман

person Community    schedule 05.10.2011
comment
$xml_import_id равен 9, как в моей базе данных. Пробовал print_r(mysql_fetch_assoc($res)) - ничего не печатает. - person Astrip; 05.10.2011
comment
Я тоже пробовал "xml_import_id='".$xml_import_id."'", но $res по-прежнему пуст. - person Astrip; 05.10.2011