2013-06-04 4 views
0

У меня есть эта функция на мою модели, которая принимает параметр, так что я могу предварительно загрузить информацию на странице просмотра, но как-то возвращается пустой:функция Codeigniter возвращение пустого запроса

function addTicket($idt) 
    { 
     //Db Connection 
     $DB2 = $this-> load-> database('DB2', TRUE); 
     if (!empty($idt)){ 

      $query = $DB2->query (" 
        Select TROUBLE_ID, ASSIGNED_DATE, CREATOR, PROBLEM_DESCRIPTION, RESOLUTION, RESOLVED_DATE 
        FROM TABLE1 
        WHERE TROUBLE_ID = ".$idt." 
        "); 

     if($query){ 

      return $query->result_array(); 
     } 
     else 
      { 

     echo 'No Queries to display'; 
      } 
     } 
     else {echo 'No results to display';} 
    } 

У меня есть Oracle DB с тонны записей, но запрос продолжает возвращаться пустым. На всякий случай я сделал echo 'id:'.$idt.;, чтобы проверить, проходит ли идентификатор. И да, это так. Также Im получаю это сообщение: Фатальная ошибка: Вызов функции члена result_array() на не-объект

На моей странице просмотра у меня есть этот код:

foreach($results as $row){ } 

И им получить это сообщение: Ошибка PHP возникла Уровень важности: предупреждение Сообщение: Неверный аргумент, предоставленный foreach() Любая идея, почему это не работает?

ответ

2

Является ли этот CodeIgniter? Если это так лучший способ проверить результатов if($query->num_rows() > 0) { }, а не просто if($query) { }

Кроме того, если его CodeIgniter убедитесь, что у вас есть db_debug набор для TRUE в конфигурации/database.php в противном случае вы не получите, чтобы увидеть ошибки базы данных.

+0

Да, это CodeIgniter 1.7. 2, после того как я изменил db_debug ИСТИНА, я получил это: ' База данных Ошибка Произошел Номер ошибки: Выберите TROUBLE_ID, ASSIGNED_DATE, СОЗДАТЕЛЬ, PROBLEM_DESCRIPTION, РАЗРЕШЕНИЕ, RESOLVED_DATE FROM TABLE1 WHERE TROUBLE_ID = ABC000001067442 ' – NinjaCoder

+0

Я думаю, что стек убрал некоторые из них, вы можете предоставить скриншот? ошибка не имеет никакого смысла ... – DigitalFiz

+0

О, неважно. потому что your problem_id - это строка, в которой вам нужно поместить одинарные кавычки. – DigitalFiz

0

По какой-то причине запрос не удается

$this->db->_error_message(); 

должен сказать вам, почему

$this->output->enable_profiler(TRUE); 

Если даст вам гораздо больше информации о запросе

Update:

$DB2 = $this-> load-> database('DB2', TRUE); 
    if (!empty($idt)){ 

     $query = $DB2->query (" 

изменения ^^ В. В.

$DB2 = $this-> load-> database('DB2', TRUE); 
    if (!empty($idt)){ 

     $query = $this->DB2->query (" 
+0

Я не вижу там никаких ошибок, все выглядит нормально – NinjaCoder

+0

не будет ли это $ this-> DB2-> query()? – exussum

0

Наконец мне удалось решить эту проблему, когда в моем состоянии запроса я использовал одиночные кавычки перед двойными кавычками, например:

Select TROUBLE_ID, ASSIGNED_DATE, CREATOR, PROBLEM_DESCRIPTION, RESOLUTION, RESOLVED_DATE 
FROM TABLE1 
WHERE TROUBLE_ID = '" . $idt . "' 
Смежные вопросы