2012-08-29 25 views
0

我不知道这篇文章是否有重复。我发现了一些由JQuery DataTable构成的php文件,并且是由某人制作的(我不知道开发人员在哪里)。这个查询有什么样的mysql函数?

Clientside

Serverside

此查询的功能是显示数据库里面的数据,查询,如:

case 'average' : 
       $needfieldname=false; 
       $month=getVar('calcmonth'); 
       $sql="SELECT SQL_CALC_FOUND_ROWS ID,name,remark,avrusepmonth 
       , CONCAT('<input type=''checkbox''id=''cb' , ID ,''' name=''check[]'' value=''',ID,''' >' 
       ,'<label class=''lbcb'' for=''cb', ID,'''><=update=</label>') as checkb 
       , moq, leadtime 
       FROM test_media "; 
       break; 

我要问这里是这一部分:

monthavrage(ID,".$month.") as latestavr 

查询中有什么样的Mysql函数y以上?因为我得到了这样的错误:如果关联的错误代码是1305,

FUNCTION TestMediaControl.monthavrage does not exist 
+7

EWWWWWW ...在数据库中生成html?用火消除该查询(或者从轨道核子化)并将它所属的html代码放在客户端中。而且,mysql使用反斜杠来转义单引号。使用'\''而不是''''。 –

+1

这可能是一个用户定义的函数:http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html –

+0

@SayemAhmed:首先这个页面可以工作,但在某些用户忘记点击更新后按钮每25个月在本页面显示错误。所以,我想跟踪哪里是根本原因,并发现该函数。但是,我没有发现任何声明之前,MySQL的查询。 – nunu

回答

0

我发现了一个声明monthavrage函数的SQL文件。 我只需要执行这个文件,所以我的问题就消失了。

USE testmediacontrol; 

DROP FUNCTION IF EXISTS monthavrage; 


delimiter // 

CREATE FUNCTION monthavrage (mediaID MEDIUMINT ,amonth DECIMAL(2)) RETURNS DECIMAL(6,2) 
BEGIN 
     DECLARE avguse DECIMAL(6,2); 
     DECLARE howlongmonth DECIMAL(2); 

     SELECT DATEDIFF(NOW(),startuse)/30.4 
      INTO howlongmonth from media_use 
      WHERE media_ID=mediaID 
      ORDER BY startuse 
      LIMIT 0,1; 
     IF howlongmonth < amonth THEN 
      SET amonth=howlongmonth; 
     END IF; 
     IF amonth <= 0 THEN 
      RETURN 0; 
     END IF; 
     SELECT count(*)/amonth 
      INTO avguse from media_use 
      WHERE media_ID=mediaID and startuse BETWEEN SUBDATE(now(),INTERVAL 6 MONTH) and now(); 
     RETURN avguse; 
END 
0
FUNCTION TestMediaControl.monthavrage does not exist 

这意味着MySQL正在寻找存储过程“monthavrage”,并不能找到它。

+0

当然,我现在是这样,但这个查询的第一个可以正常工作,请参阅我对Sayed Ahmed的评论。 – nunu