function fetch_data_now() { $this->_options['queryready'] = true; /* $result = doitClass::$instance->db->query($this->to_sql()); if(!$result){ print $this->to_sql(); }else{ $this->_data = $result->fetchAll(PDO::FETCH_ASSOC); $this->_count = count($this->_data); } */ $_sql = $this->to_sql(); if (!$this->_options['calc_rows'] && isset(ActiveRecord::$_queries_cache[$_sql])) { $this->_data = ActiveRecord::$_queries_cache[$_sql]; } else { $db_result = doitClass::$instance->db->query($_sql); if (d()->db->errorCode() == '42S22') { $db_err = d()->db->errorInfo(); if ($db_err[1] == '1054') { $_column_name = array(); if (preg_match_all("/Unknown\\scolumn\\s\\'(.*?)\\'/", $db_err[2], $_column_name) == 1) { $_column_name = $_column_name[1][0]; if ($_column_name == 'sort') { $scaffolder = new Scaffold(); $scaffolder->create_field($this->_options['table'], 'sort'); $db_result = doitClass::$instance->db->query($_sql); } } } } if (d()->db->errorCode() == '42S02' || d()->db->errorCode() == '42S22') { d()->bad_table = $this->_options['table']; } if (d()->db->errorCode() == 'HY000') { if (DB_TYPE == 'mysql') { doitClass::$instance->db = new PDO(DB_TYPE . ':host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USER, DB_PASSWORD); doitClass::$instance->db->exec('SET CHARACTER SET utf8'); doitClass::$instance->db->exec('SET NAMES utf8'); } else { doitClass::$instance->db = new PDO(DB_TYPE . ':host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USER, DB_PASSWORD); } $db_result = doitClass::$instance->db->query($_sql); } if (d()->db->errorCode() == 'HY000') { print 'Mysql недоступен. Попытка переподключения не удалась. '; } /* if(!is_object($db_result)){ if (iam()){ print 'Неизвестная ошибка базы данных. Запрос, который не удалось выполнить: ' . h($_sql) . '<br> Код ошибки: '; }else{ print 'Неизвестная ошибка базы данных. Запрос, который не удалось выполнить, можно узнать только под аккаунтом разработчика.<br> Код ошибки: '; } print d()->db->errorCode().'<br> Данные ошибки: '; var_dump(d()->db->errorInfo()); die('<br>Это всё, что мы знаем.'); } */ $this->_data = $db_result->fetchAll(PDO::FETCH_ASSOC); if ($db_result !== false) { ActiveRecord::$_queries_cache[$_sql] = $this->_data; } } $this->_count = count($this->_data); if ($this->_count > 0) { if (!isset(doitClass::$instance->datapool['columns_registry'])) { doitClass::$instance->datapool['columns_registry'] = array(); doitClass::$instance->datapool['_known_fields'] = array(); } if (!isset(doitClass::$instance->datapool['columns_registry'][$this->_options['table']])) { doitClass::$instance->datapool['_known_fields'][$this->_options['table']] = array_keys($this->_data[0]); doitClass::$instance->datapool['columns_registry'][$this->_options['table']] = array_keys($this->_data[0]); } } if ($this->_options['calc_rows']) { $_countrows_line = doitClass::$instance->db->query('SELECT FOUND_ROWS()')->fetch(); $this->_count_rows = $_countrows_line[0]; } }