MySQL phpmyadmin 中的过程
Posted
技术标签:
【中文标题】MySQL phpmyadmin 中的过程【英文标题】:Procedure in MySQL phpmyadmin 【发布时间】:2014-09-14 07:15:29 【问题描述】:我想在 ASP 中创建一个页面查看计数器,并想检查自上次查看某个 ip 以来是否已经过去了 10 分钟。我已经在 mysql phpmyadmin 中编写了一个程序来检查数据库。
CREATE PROCEDURE counter(
in ipOfVisitor varchar(30),
in pid int(10))
BEGIN
SELECT @visitor_IP := ip, @date_dif := DATEDIFF( CURDATE( ) , last_counted )
FROM visitors
WHERE ip = ipOfVisitor ;
IF (NOT @visitor_IP = null AND @date_dif > 600) OR @visitor_IP = null THEN
UPDATE patientifo SET numberofclicks = numberofclicks + 1 WHERE id = pid;
END IF;
IF NOT @visitor_IP = null AND @date_dif > 600 THEN
UPDATE visitors SET last_counted = CURDATE( ) where ip = ipOfVisitor;
END IF;
IF @visitor_IP = null THEN
INSERT INTO visitors (ip, last_counted) VALUES (ipOfVisitor, CURDATE ());
END IF;
END
但它给出了错误
CREATE PROCEDURE counter( IN ipOfVisitor VARCHAR( 30 ) , IN pid INT( 10 ) ) BEGIN SELECT @visitor_IP := ip, @date_dif := DATEDIFF( CURDATE( ) , last_counted )
FROM visitors
WHERE ip = ipOfVisitor;
#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 9 行的 '' 附近使用正确的语法
什么意思?
编辑
我更改了juergen d 所说的代码。
DELIMITER |
CREATE PROCEDURE counter(
in ipOfVisitor varchar(30),
in pid int(10))
BEGIN
DECLARE visitor_IP varchar(30);
DECLARE date_dif int(10);
SELECT ip,DATEDIFF( CURDATE( ) , last_counted ) INTO visitor_IP, date_dif
FROM visitors
WHERE ip = ipOfVisitor ;
IF (NOT visitor_IP = null AND date_dif > 600) OR visitor_IP = null THEN
UPDATE patientifo SET numberofclicks = numberofclicks + 1 WHERE id = pid;
END IF;
IF NOT visitor_IP = null AND date_dif > 600 THEN
UPDATE visitors SET last_counted = CURDATE( ) where ip = ipOfVisitor;
END IF;
IF visitor_IP = null THEN
INSERT INTO visitors (ip, last_counted) VALUES (ipOfVisitor, CURDATE ());
END IF;
END
|
它几乎可以工作。除了最后一行的这个错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '|' at line 22
【问题讨论】:
【参考方案1】:您需要更改分隔符。否则数据库会认为您的过程定义在第一个 ;
处结束,这将是不完整的。
delimiter |
CREATE PROCEDURE counter(
in ipOfVisitor varchar(30),
in pid int(10))
BEGIN
...
END
|
【讨论】:
它几乎可以工作,但是它在最后一行 #1064 出现错误 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 '|' 附近使用的正确语法在第 22 行 好像有问题。你执行了什么代码? 实际上它对我有用。我执行了你提供的确切代码以上是关于MySQL phpmyadmin 中的过程的主要内容,如果未能解决你的问题,请参考以下文章
phpMyAdmin 错误代码:13 无法获取 './test' 的统计信息
我无法使用 springboot 连接到我的 mysql 数据库我使用相同的密码和名称与 phpmyadmin 连接得很好