2009-05-04 85 views
0

我一直在努力使這項工作在過去的幾個小時。我有一個簡單的存儲過程稱爲get_log_entries:PEAR MDB2 executeStoredProc並返回一個結果集。可能?值得?

CREATE DEFINER=`root`@`localhost` PROCEDURE `get_log_entries`(p_min_id INT) 
BEGIN 
    SET p_min_id = IFNULL(p_min_id, -1); 
    SELECT * FROM db_log WHERE item_id > p_min_id; 
END 

它死了簡單,兩列返回結果:ITEM_ID(int)和log_description(VARCHAR)。

我正在嘗試使用MDB2對象執行此操作,但至今沒有運氣。下面是正在試圖做到這一點的代碼:

$conn = MDB2::factory('mysql://myUser:[email protected]/my_db'); 

if (PEAR::isError($conn)) { 
    die ("Cannot connet to DB(10): " . $conn->getMessage()); 
} 

// loading the Function module 
$conn->loadModule('Function'); 

$params = array('null'); 

$result = $conn->executeStoredProc('get_log_entries', $params); 

if (PEAR::isError($result)) { 
    $msg = $result->getMessage() . "<br /><br />" . $result->getUserInfo(); 
    die ($msg); 
} 

在這一點上這個可愛的錯誤顯示了以下消息:

「_doQuery:[錯誤消息:無法 執行語句] [尾頁執行 查詢:CALL get_log_entries()] [本機代碼 :1312] [本機消息:PROCEDURE wh_search.get_log_entries不能返回 在給定上下文]」

結果集

現在我有幾個問題:
1.是否可以使用MDB2執行SP並返回結果集?
2.或者爲自己的「本地」PHP-MySQL函數編寫一個包裝類更好嗎?

謝謝!

回答

0

沒關係,封裝mysqli來調用SP。也很有趣...