MySQL phpmyadmin中的过程
我想在ASP中创建一个页面查看计数器,并想检查自上次从某个ip查看以来是否已经过了10分钟。我在MySQL phpmyadmin中编写了一个过程,用于在数据库中检查该过程MySQL phpmyadmin中的过程,mysql,sql,stored-procedures,phpmyadmin,Mysql,Sql,Stored Procedures,Phpmyadmin,我想在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
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行“”附近要使用的正确语法
这是什么意思
编辑
我像你说的那样修改了密码
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-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第22行“|”附近使用的正确语法。您需要更改分隔符。否则DB认为您的过程定义在第一个处结束代码>这将是不完整的
delimiter |
CREATE PROCEDURE counter(
in ipOfVisitor varchar(30),
in pid int(10))
BEGIN
...
END
|
您需要更改分隔符。否则DB认为您的过程定义在第一个处结束代码>这将是不完整的
delimiter |
CREATE PROCEDURE counter(
in ipOfVisitor varchar(30),
in pid int(10))
BEGIN
...
END
|
您需要更改分隔符。否则DB认为您的过程定义在第一个处结束代码>这将是不完整的
delimiter |
CREATE PROCEDURE counter(
in ipOfVisitor varchar(30),
in pid int(10))
BEGIN
...
END
|
您需要更改分隔符。否则DB认为您的过程定义在第一个处结束代码>这将是不完整的
delimiter |
CREATE PROCEDURE counter(
in ipOfVisitor varchar(30),
in pid int(10))
BEGIN
...
END
|
它几乎可以工作,但在最后一行给出了错误#1064-您的SQL语法中有一个错误;检查与MySQL服务器版本对应的手册,以了解第22行“|”附近使用的正确语法似乎有问题。你执行了什么代码?实际上它对我有用。我执行了您提供的代码,它几乎可以正常工作,但最后一行出现错误#1064-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第22行“|”附近使用的正确语法似乎有问题。你执行了什么代码?实际上它对我有用。我执行了您提供的代码,它几乎可以正常工作,但最后一行出现错误#1064-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第22行“|”附近使用的正确语法似乎有问题。你执行了什么代码?实际上它对我有用。我执行了您提供的代码,它几乎可以正常工作,但最后一行出现错误#1064-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第22行“|”附近使用的正确语法似乎有问题。你执行了什么代码?实际上它对我有用。我执行了你提供的代码