2012-01-30 107 views
0

我想使用我的自定義PHP函數CalculateAge,它需要SQL UPDATE中的3個參數(日,月和年)。但是,我需要將SQL變量傳遞給該函數,我不知道該如何去做。以下是它的外觀(請注意,bday,bmonth和byear是「用戶」表格列)。語法:在SQL UPDATE查詢中使用PHP函數

mysql_query("UPDATE users SET age=".CalculateAge(bday,bmonth,byear).""); 
+0

你不能這樣做。 PHP以字符串的形式向MySQL服務器發送請求,並且該字符串'不知道'您的PHP函數。它只包含你將要放入的'文本'。告訴我們該功能在做什麼 - 通過SQL請求可能會做同樣的事情。 – Cheery 2012-01-30 06:21:20

+0

另一種方式 - 在數據庫中實現存儲函數。看[存儲例程](http://dev.mysql.com/doc/refman/5.1/en/stored-routines.html) – dmitry 2012-01-30 09:54:59

回答

1

你不能將mysql的值傳遞到這樣的函數中。您必須執行SELECT以獲取值,獲取行,將它們傳遞給該函數,然後INSERT該值。

我建議不要更新年齡,而應該存儲此人的生日,因爲它永遠不會改變。當你想顯示他們的年齡,只需做數學。

+0

好的,謝謝我會做很長的路 – 2012-01-30 06:23:32

1

您不能在查詢中交織PHP函數。您需要首先查詢每行中的數據;計算每行的結果值,然後運行查詢以根據結果更新每行。

1

首先從數據庫中檢索數據:

$data = mysql_query("SELECT bday,bmonth,byear FROM users"); 
$info = mysql_fetch_array($data); 

現在打電話給你的PHP函數$age=CalculateAge($info['bday'],$info['bmonth'],$info['byear']);
,然後更新表...。

mysql_query("UPDATE users SET age=".$age."");