Получение данных из таблиц базы данных SQLite с помощью PHP PDO
В этом уроке показано, как можно различными способами запрашивать данные из таблицы SQLite с помощью PHP PDO.
Чтобы запросить данные из таблицы, вы используете следующие шаги:
- Подключитесь к базе данных SQLite, используя объект PDO.
- Используйте метод
query()
объекта PDO для выполнения инструкцииSELECT
. Методquery()
возвращает набор результатов в виде объектаPDOStatement
. Если вы хотите передать значения в операторSELECT
, вы создаете объектPDOStatement
, вызывая методprepare()
объекта PDO, связывая значения с помощью методаbindValue()
объектаPDOStatement
и вызывая методexecute()
для завершения выполнения. - Переберите набор результатов с помощью метода
fetch()
объектаPDOStatement
и обработайте каждую строку отдельно.
Метод getProjects()
.
/** * Get all projects * @return type */ public function getProjects() { $stmt = $this->pdo->query('SELECT project_id, project_name ' . 'FROM projects'); $projects = []; while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) { $projects[] = [ 'project_id' => $row['project_id'], 'project_name' => $row['project_name'] ]; } return $projects; }
Этот метод извлекает все проекты из таблицы проектов, используя инструкцию SELECT
:
SELECT project_id, project_name FROM projects;
Сначала мы вызвали метод query()
объекта PDO для запроса данных из таблицы проектов. Метод query()
возвращает объект PDOStatement
, который мы присвоилил в $stmt
.
Затем мы вызвали метод fetch()
объекта PDOStatement
для получения следующей строки из набора результатов. Мы передали следующее значение параметру fetch_style
метода fetch()
.
\PDO::FETCH_ASSOC
Параметр fetch_style
определяет, в каком виде возвращать данные. FETCH_ASSOC
означает, что метод fetch()
вернет массив, проиндексированный по имени столбца.
В-третьих, мы собрали данные внутри цикла while и вернули результат в виде ассоциативного массива проектов.
Если вы хотите, чтобы метод fetch()
возвращал строку в наборе результатов как объект, вы можете использовать:
\PDO::FETCH_OBJ // Или метод fetchObject().
Следующий метод getProjectObjectList()
возвращает список объектов проектов.
/** * Get the project as an object list * @return an array of Project objects */ public function getProjectObjectList() { $stmt = $this->pdo->query('SELECT project_id, project_name ' . 'FROM projects'); $projects = []; while ($project = $stmt->fetchObject()) { $projects[] = $project; } return $projects; }
Обратите внимание, что имена свойств объекта соответствуют именам столбцов в наборе результатов. Например, вы можете получить доступ к именам свойств объекта проекта как:
$project->project_id; $project->project_name;
Метод getTasks()
:
/** * Get tasks by the project id * @param int $projectId * @return an array of tasks in a specified project */ public function getTaskByProject($projectId) { // prepare SELECT statement $stmt = $this->pdo->prepare('SELECT task_id, task_name, start_date, completed_date, completed, project_id FROM tasks WHERE project_id = :project_id;'); $stmt->execute([':project_id' => $projectId]); // for storing tasks $tasks = []; while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) { $tasks[] = [ 'task_id' => $row['task_id'], 'task_name' => $row['task_name'], 'start_date' => $row['start_date'], 'completed_date' => $row['completed_date'], 'completed' => $row['completed'], 'project_id' => $row['project_id'], ]; } return $tasks; }
В этом методе мы получаем все задачи, связанные с проектом, поэтому нам нужно передать идентификатор проекта в инструкцию SELECT
.
Для этого мы используем метод prepare()
для подготовки оператора SELECT
к выполнению и передачи идентификатора проекта в оператор с помощью метода execute()
.
Если оператор SELECT
возвращает одно значение, например, когда мы используем в запросе статистическую функцию, такую как COUNT, AVG, SUM, MIN, MAX и т. Д.
Чтобы получить значение, вы используете метод fetchColumn()
, который возвращает один столбец из следующей строки в наборе результатов.
Следующий метод getTaskCountByProject()
, который возвращает количество задач в указанном проекте:
/** * Get the number of tasks in a project * @param int $projectId * @return int */ public function getTaskCountByProject($projectId) { $stmt = $this->db->prepare('SELECT COUNT(*) FROM tasks WHERE project_id = :project_id;'); $stmt->bindParam(':project_id', $projectId); $stmt->execute(); return $stmt->fetchColumn(); }В этом уроке мы узнали о различных способах запроса данных в базе данных SQLite с использованием PHP PDO.