2012-01-30 40 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."");