解决了的
我有这个代码块,将插入数据到所有唯一的电子邮件地址可用的emp\ U离开\ U平衡表。问题是即使它没有捕捉到错误,它也不能工作。我在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错误
新问题
我正在尝试根据表中可用的不同电子邮件地址数循环insert查询。问题是我的循环不起作用。
$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";
1条答案
按热度按时间qf9go6mv1#
ci中很少(如果有的话)函数抛出异常,如果抛出异常,通常是由于本机php函数引起的。对你来说
query()
将根据是否成功返回布尔值,因此try-catch块是多余的。话说回来
query()
函数的作用是执行一个查询,这样我就看不出在处理phpmyadmin不能处理的任何内容时是否有问题。我建议你去database.php
文件和更改db_debug
是真的。这将帮助您找到错误的确切原因。