Как использовать планировщик событий mysql в модели codeigniter

0

РЕШИТЬ

У меня есть этот блок кодов, который будет вставлять данные во все уникальные email_address, доступные в таблице emp_leave_balance. Проблема в том, что он не работает, хотя он не поймал ошибку. Я пробовал этот код в cmd, и он отлично работает. Я не уверен, что codeigniter принимает такой запрос или нет.

МОДЕЛЬ

public function insert_credit_points_data($email){
    try{

        $sql = "DELIMITER $$ 
        CREATE EVENT ecp 
        ON SCHEDULE EVERY 1 MINUTE STARTS NOW() DO 
        BEGIN 
        INSERT INTO emp_leave_balance (balance, date_from, date_to, leave_type, earned, date_filed, action_taken,email_address) 
        SELECT (1.25+balance), NOW(), DATE_ADD(NOW(),INTERVAL 1 MINUTE), 'Vacation', 1.25, NOW(), 'CREDITED',".$email." FROM emp_leave_balance where email_address = ".$email." ORDER BY balance DESC LIMIT 1; 
        END$$ 
        DELIMITER ;";

        $this->db->query($sql); 

    }catch(Exception $e){
        throw $e;
    }
}

SQL ERROR

НОВАЯ ПРОБЛЕМА

Я пытаюсь зациклировать запрос вставки на основе количества различных адресов электронной почты, доступных в моей таблице. Проблема в том, что моя петля не работает.

$sql = "CREATE EVENT ecp ON SCHEDULE EVERY 1 MINUTE STARTS NOW() DO 
        BEGIN
        DECLARE x INT DEFAULT 0;
        DECLARE counter INT DEFAULT (SELECT COUNT(DISTINCT(email_address)) FROM emp_leave_balance);
            simple_loop: LOOP
                INSERT INTO emp_leave_balance (balance, date_from, date_to, leave_type, earned, date_filed, action_taken,email_address) 
                SELECT (1.25+balance), NOW(), DATE_ADD(NOW(),INTERVAL 1 MINUTE), 'Vacation', 1.25, NOW(), 'CREDITED','".$email."' FROM emp_leave_balance where email_address = '".$email."' ORDER BY balance DESC LIMIT 1;
            SET x = x + 1;
            IF x<counter THEN
                LEAVE simple_loop;
            END IF;
            END LOOP simple_loop;
        END";
Теги:
model-view-controller
codeigniter
model

1 ответ

0
Лучший ответ

Очень немногие (если есть) функции в исключениях CI бросают, если они это делают, это обычно происходит из-за собственной php-функции. В вашем случае query() будет возвращать значение boolean в зависимости от того, удалось ли ему это сделать, чтобы блок catch try был лишним.

С учетом сказанного, вся функция query() выполняет запрос, поэтому я не вижу, если проблема с обработкой чего-либо, что не может сделать phpmyadmin. Я бы предложил перейти в файл database.php и изменить db_debug на true. Это поможет вам найти точную причину ошибки.

  • 0
    Спасибо тебе за это. Я получил ошибку, но я все еще не знаю, как ее исправить. Можете ли вы помочь мне об этом. Я добавлю ошибку в свой пост
  • 0
    Я уже заставил это работать. Спасибо кстати
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню