/** * @param $sql * @param array $params * @param bool $throwable * @return \PDOStatement */ static function query($sql, $params = [], $throwable = false) { // Attempt to reconnect if connection has gone away. if (!_db::connected()) { _db::reconnect(); } $prep_sql = _db::$con->prepare($sql); if (!empty($params)) { foreach ($params as $key => $val) { $prep_sql->bindValue($key, $val); } } try { $prep_sql->execute(); } catch (\PDOException $e) { $error = node::create('div.error_message.mysql', [], node::create('p', [], $e->getMessage() . \core::get_backtrace() . print_r(isset($prep_sql->queryString) ? $prep_sql->queryString : '', 1) . print_r($params, true))); if (ajax) { _ajax::inject('body', 'append', $error); if (!$throwable) { _ajax::do_serve(); die; } } else { echo $error; if (!$throwable) { die; } } } return $prep_sql; }