2012-08-29 52 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