В этом уроке показано, как можно различными способами запрашивать данные из таблицы 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.
Комментарии (0)
Пока еще не было комментариев ✍️