Задать вопрос
@fakin_kiska
Telegram Bots and iOS

Как получать строку из БД сравнив ее с переменной?

Мой бот в телеграм сохраняет все job_id задач из Гитлаба, которые запускаются вручную, и при получении ивента с этим заданием отправляет сообщение с кнопкой, которая должна запустить задачу

Функции для сохранения и получения job_id:

// Записывает айди задания в БД
function job_id_set($job_id)
{
    global $pdo;
    $sql = "INSERT INTO `notification_messages` (job_id) 
    VALUES (:job_id)";
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':job_id', $job_id, PDO::PARAM_INT);
    $stmt->execute();
    return true;
}

// Достает айди задания из БД
function job_id_get()
{
    global $pdo;
    $sql = "SELECT job_id
        FROM notification_messages
        WHERE job_id = :job_id";
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':job_id', $job_id, PDO::PARAM_INT);
    $stmt->execute();
    return $stmt->fetch();
}


Сейчас бот отправляет ошибку, что сообщение пустое, следовательно выборка не работает

Если добавить SELECT job_id FROM notification_messages WHERE job_id = :job_id ORDER BY id DESC LIMIT 1, то задача запускается, но это не будет работать если ручных задач больше 1

Данные о задачах берутся и сохраняются следующим образом:

$input = file_get_contents("php://input");
$json = json_decode($input);
$job_id = $json->builds[$i]->id;

if ($status == 'manual') {
    job_id_set($job_id); 
}


Запуск задачи:

$token = token_in_work_select($user_id);
switch ($callback_data) {
    case 'start_job': // Кнопка "Запустить задание"
        $job_id_get = job_id_get();
        $post = [
            'chat_id' => $user_id,
            'text' => $callback_data
        ];
        sendRequest('sendMessage', $post);
        exec('curl --request POST --header "PRIVATE-TOKEN: ' . $token['token'] . '" "https://gitlab.com/api/v4/projects/' . $project_id . '/jobs/' . $job_id_get['job_id'] . '/play"');
        break;
}


Может ли быть такое, что при запуске задачи в переменной ничего не хранится, так как файлы с сохранением job_id и его получением имеют разные вебхуки? Пробовал сделать include файла с сохранением айди задачи, ответ бота не поменялся
  • Вопрос задан
  • 144 просмотра
Подписаться 1 Средний 6 комментариев
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
иди читать описание к fetch()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы