DataBaseHandle->prepare($query, [PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY]); // Выполняю запрос $STH->execute($params); // Указываю, что данные, которые я хочу получить, должны быть в ассоциативном массиве $STH->setFetchMode(PDO::FETCH_ASSOC); // Получаю все данные $result = $STH->fetchAll(); } catch (PDOException $e) { $this->HandleException($e); } // Вывожу результат return $result; } /** * Выполняем запрос на получение одной строки (аналог QueryFirst) * * @param string $query Запрос * @param array $params Параметры запроса * * @return false|array Строка в формате массива или false в случае ошибки * * @see Query * @see QueryFirst * @see QueryLast * @see GetRow */ public function QueryScalar (string $query, array $params = []): false|array { return $this->QueryFirst($query, $params); } /** * Выполняем запрос на получение первой строки * * @param string $query Запрос * @param array $params Параметры запроса * * @return false|array Строка в формате массива или false в случае ошибки * * @see Query * @see QueryLast * @see QueryScalar */ public function QueryFirst (string $query, array $params = []): false|array { // Выполняю запрос $result = $this->Query($query, $params); // Если в результате запроса получили ошибку или количество строк = 0 if ($result === false || count($result) == 0) // - то возвращаем ошибку return false; // Получаю первый ключ массива $firstKey = array_key_first($result); // Возвращаем первую строку return $result[$firstKey]; } /** * Выполняем запрос на получение последней строки * * @param string $query Запрос * @param array $params Параметры запроса * * @return false|array Строка в формате массива или false в случае ошибки * * @see Query * @see QueryFirst * @see QueryScalar */ public function QueryLast (string $query, array $params = []): false|array { // Выполняю запрос $result = $this->Query($query, $params); // Если в результате запроса получили ошибку или количество строк = 0 if ($result === false || count($result) == 0) // - то возвращаем ошибку return false; // Получаю последний ключ массива $lastKey = array_key_last($result); // Возвращаем первую строку return $result[$lastKey]; } /** * Выполнение запроса. Обычно используется для операций, * которые не возвращают никаких данных, кроме количества * затронутых ими записей. Например, * * $db->Execute('DELETE FROM table WHERE id=1'); * * @param string $query Запрос * @param array $params Параметры запроса * * @return int|false Количество затронутых строк или false в случае ошибки */ public function Execute (string $query, array $params = []): int|false { // По умолчанию результат false $result = false; try { // Если параметры не заданы if (count($params) == 0) { // - то выполняю запрос $result = $this->DataBaseHandle->exec($query); } else { // - в противном случае // -- подготавливаю запрос $STH = $this->DataBaseHandle->prepare($query, [PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY]); // -- выполняю запрос $opResult = $STH->execute($params); // -- и если выполнение успешное, if ($opResult) // --- то в результат пойдёт количество строк $result = $STH->rowCount(); } } catch (PDOException $e) { $this->HandleException($e); } // Если в результате false if ($result === false) // - то возвращаю его return false; // Возвращаю результат return $result; } }