Проблема с отображением исполнителей из базы данных
Столкнулся с проблемой: исполнители не отображаются из базы данных, хотя подключение настроено правильно. Однако данные не только не выводятся, но и в консоли появляется ошибка подключения. Пробовал искать решение через ChatGPT, но это не помогло. Надеюсь на помощь сообщества.
Для диагностики привожу код, используемый для работы с БД:
Файл подключения к базе данных (db.php)
<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'task_app');
$mysql = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if ($mysql->connect_errno) {
die(json_encode(['error' => 'Ошибка подключения к БД: ' . $mysql->connect_error]));
}
$mysql->set_charset('utf8');
?>Основной файл API (index.php)
<?php
error_reporting(0);
ini_set('display_errors', 0);
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
require_once __DIR__ . '/db.php';
if (!isset($mysql)) {
die(json_encode(['error' => 'Ошибка подключения к базе данных']));
}
$method = $_SERVER['REQUEST_METHOD'];
$action = $_GET['action'] ?? '';
// Логика обработки запросов (GET, POST, PUT, DELETE) с различными действиями
if ($method === 'GET' && $action === 'get') {
// Получение всех задач
$result = $mysql->query("SELECT * FROM tasks ORDER BY created_at DESC");
if (!$result) {
die(json_encode(['error' => 'Ошибка запроса: ' . $mysql->error]));
}
$tasks = [];
while ($row = $result->fetch_assoc()) {
$tasks[] = $row;
}
echo json_encode($tasks);
exit;
} elseif ($method === 'POST' && $action === 'create') {
// Создание новой задачи
$data = json_decode(file_get_contents('php://input'), true);
$title = $data['title'] ?? '';
$description = $data['description'] ?? '';
$executor = $data['executor'] ?? '';
$photosCount = $data['photosCount'] ?? 0;
$status = $data['status'] ?? 'pending';
if (empty($title)) {
echo json_encode(['error' => 'Название обязательно']);
exit;
}
$stmt = $mysql->prepare("INSERT INTO tasks (title, description, executor, photos_count, status) VALUES (?, ?, ?, ?, ?)");
if (!$stmt) {
echo json_encode(['error' => 'Ошибка подготовки запроса: ' . $mysql->error]);
exit;
}
$stmt->execute([$title, $description, $executor, $photosCount, $status]);
echo json_encode(['success' => true, 'id' => $mysql->insert_id]);
exit;
} elseif ($method === 'PUT' && $action === 'update') {
// Обновление статуса задачи
$data = json_decode(file_get_contents('php://input'), true);
$id = $data['id'] ?? null;
$status = $data['status'] ?? '';
if (!$id || !$status) {
echo json_encode(['error' => 'Некорректные данные']);
exit;
}
$stmt = $mysql->prepare("UPDATE tasks SET status = ? WHERE id = ?");
if (!$stmt) {
echo json_encode(['error' => 'Ошибка подготовки запроса: ' . $mysql->error]);
exit;
}
$stmt->execute([$status, $id]);
echo json_encode(['success' => true]);
exit;
} elseif ($method === 'DELETE' && $action === 'delete') {
// Удаление задачи
parse_str(file_get_contents('php://input'), $data);
$id = $data['id'] ?? null;
if (!$id) {
echo json_encode(['error' => 'ID задачи не указан']);
exit;
}
$stmt = $mysql->prepare("DELETE FROM tasks WHERE id = ?");
if (!$stmt) {
echo json_encode(['error' => 'Ошибка подготовки запроса: ' . $mysql->error]);
exit;
}
$stmt->execute([$id]);
echo json_encode(['success' => true]);
exit;
} elseif ($method === 'GET' && $action === 'get_users') {
// Получение списка пользователей
$result = $mysql->query("SELECT id, login, name FROM users");
if (!$result) {
die(json_encode(['error' => 'Ошибка запроса: ' . $mysql->error]));
}
$users = [];
while ($row = $result->fetch_assoc()) {
$users[] = $row;
}
echo json_encode($users);
exit;
}
echo json_encode(['error' => 'Неизвестное действие']);
?>Возможные причины проблемы и рекомендации
- Проверьте, что база данных task_app существует и в ней есть таблица users с колонками id, login, name.
- Убедитесь, что используется правильный пользователь БД (root с пустым паролем для localhost).
- Включите отображение ошибок временно (уберите
error_reporting(0)) для детального вывода. - Проверьте, что расширение mysqli активно в PHP.