2011-01-25 122 views
3

花了幾個小時尋找答案沒有成功。我在MySQL中編寫了一個用戶定義的函數,它傳遞了一個標識符,用於檢索各種數據,並將其連接成一個字符串並返回。我想從我的PHP頁面調用這個函數並輸出結果。如何在PHP中使用MySQL用戶定義的函數?

不成功的嘗試包括:

1. $result = mysql_query("select functionName($id)"); 

2. $sql = "select functionName($id)"; 
    $result = mysql_query($sql, $link); 

3. functionName($id) 

任何想法?

+0

你是指存儲過程嗎?如果是這樣的話,您需要致電YourSP() – 2011-01-25 16:14:01

+0

您正處於(1)和(2)的正確軌道。你收到什麼類型的錯誤信息?在MySQL查詢工具中運行查詢時查詢是否正常工作? – 2011-01-25 16:14:43

回答

1

1和2關閉,但$result不會包含函數調用的結果。相反,它將包含來自查詢的結果cookie。您可以使用該cookie來獲取實際數據,並使用mysql_fetch_row()。函數調用只是返回select語句的值,就像「SELECT 42」或「SELECT a FROM MyTable」一樣。因此,要獲得結果,您將使用與返回結果的任何其他SQL查詢相同的機制;即使用該cookie並致電mysql_fetch_row()。因此,您的最終代碼看起來像這樣:

$result = mysql_query("select functionName($id)"); 
$row = mysql_fetch_row($result, $link); 
$returnValue = $row[0]; 

請注意,你不希望被直接插值變量爲一個SQL字符串(可以是攻擊向量)。然而,我認爲這段代碼僅僅是爲了舉例。

0

我有同樣的問題,發現從devx底部這是非常有用的寫了起來,格外部分有關調用MySQL的函數:

http://www.devx.com/webdev/Article/42887/0/page/2

至於mysqli的,我的代碼如下內容:

$result = mysqli_query($sqlconnection,"SELECT functionName($id)"); 
$row = mysqli_fetch_row($result); 
return $row[0]; 

完美地工作。

相關問題