2013-11-15 258 views
0

我正在嘗試爲MySQL數據庫創建一個存儲過程。存儲過程應該可以獲取每位員工在特定物品午餐時花費的金額。我遇到的問題是我無法讓存儲過程返回任何值。當我將它作爲SQL查詢運行並輸入日期時,我的變量應該是正常的。我正在使用MySQL。這裏是我的存儲過程:MySQL存儲過程變量

DELIMITER $$ 

CREATE PROCEDURE `class`.`PricePaid`(varBeginningDate DATE) 

BEGIN 

SELECT Item_Desc, SUM(Item_Price) AS 'Total Price Paid' 
FROM Lunch, Item, Lunch_item 
WHERE Lunch.Lunch_id = Lunch_item.Lunch_id 
AND Item.Item_Number = Lunch_item.Item_Number 
AND DATEDIFF(Lunch.Lunch_Date, "'" + varBeginningDate + "'") > 0 
GROUP BY Item.Item_Desc; 

END 

我的PHP代碼中調用該函數是這個

<?php 

include("Functions.php"); 

if(isset($_POST['SubmitPricePaid'])){ 
$strSQL = "CALL `class`.`PricePaid`('{$_POST[$PricePaidDate]}');"; 
} 
?> 

<?php if(isset($_POST['SubmitPricePaid'])){ 
     print_report($strSQL, $db); 
     } 
?> 
+1

可能無法解決你的問題,但我記得幾周前看到一個類似的帖子,就是那個'DEL IMITER $$',最後一行代碼包含'$$',它不在代碼中。可能是問題。 –

+0

我想你需要在這兩行中使用'END $$'和'DELIMITER;' –

+0

如果將$$添加到存儲過程中,我收到以下錯誤消息:您的SQL語法中有錯誤;檢查對應於您的MySQL服務器版本的手冊,以便在第12行'$$'附近使用正確的語法編輯:我添加了'DELIMITER;'並且它給了我同樣的錯誤 – Matt

回答

0

讓我們從調試開始:

<?php 

include("Functions.php"); 

if(isset($_POST['SubmitPricePaid'])){ 
$strSQL = "CALL `class`.`PricePaid`('{$_POST[$PricePaidDate]}');"; 
var_dump($strSQL); 
var_dump($db); 
exit(); //EDITED 
print_report($strSQL, $db); 
} 

?> 

你能後的var_dump的結果.. .i需要看到這些結果

+0

我得到了Item_Desc \t總價格的列標題,下面沒有數據。除非我需要尋找特定於轉儲的地方 – Matt

+0

var dump as requested:string(29)「CALL'class'.'PricePaid'('');」資源(1)類型(mysql鏈接) – Matt

+0

我添加了var dumps – Matt