MySql事件每天更新​​并根据其内容更改数据库中的某些项目

时间:2018-05-04 17:33:20

标签: php html mysql database mysqli

基本上,我正在创建一个简单的拍卖网站。我希望代码每晚9点检查一下今天即将到期的项目。如果找到,则应将最高出价者作为买方插入数据库。以下是我到目前为止所做的工作:

DELIMITER $$

CREATE 
    EVENT `sold` 
    ON SCHEDULE EVERY 1 DAY STARTS '2018-05-03 21:00:00' 
    DO BEGIN
        declare amt int;
        declare counter int;
        set counter=0;
        set amt = SELECT COUNT(*) FROM ITEMS;
        declare test;
while (counter < amt)
begin
    set test = select Visibility FROM ITEMS where Keyy = counter;
    if (test == 1)
        set test = select sold from ITEMS where Keyy = counter;
        if (!test)
            set test = select Exp from ITEMS where Keyy = counter;
            if (test == CURDATE())
                UPDATE ITEMS SET `sold`= `bidder` WHERE Keyy =counter;
set counter = counter + 1;

end

    END */$$

DELIMITER ;

1 个答案:

答案 0 :(得分:0)

MySQL中DECLARE d变量的标识符不以@开头;这仅适用于“会话”变量(对于与数据库的连接是全局的)。

此外:

  • “test”未使用类型
  • 声明
  • ==不是MySQL中的等号运算符,只是=
  • 如果select不能保证单个结果,
  • set variable = select ...会出现问题;其中一些可能需要LIMIT 1条款....虽然看起来你只是检查是否存在数据,但EXISTS查询可能对这些条款更有帮助。
  • 最后的计数增量缺少SET
  • */不属于那里,它是关闭阻止评论。

另外

  

仅允许在BEGIN ... END复合语句中使用DECLARE   并且必须在其开头,之前的任何其他陈述

来自https://dev.mysql.com/doc/refman/8.0/en/declare.html

这意味着您无法交错DECLARE和SET。