2012-04-08 45 views
1

我的数据库中有4列。 Atk,Str,Dex和Con。每一个都是INT,然后我有一个PHP函数get_level,它需要这4列,并为它们确定正确的级别。我试图根据这些“级别”来选择给定范围内的所有用户。 get_combat函数使用这4个值并查找用户的战斗级别。这是我的,这是行不通的。在MySql上使用PHP函数列

​​

有没有办法做到这一点?

回答

3

你试图做的事情是不可能的。 MySQL甚至不知道PHP是什么或者哪种语言与它交谈。

为什么不提取值并在迭代结果的循环中调用你的函数?

根据功能的复杂程度,您还可以在数据库中创建一个stored procedure。尽管如此,你不能在该函数中编写PHP代码。

+0

如果有成千上万的用户循环浏览。然后找到那个范围之后有点疯狂是不是?我不能在MySql中构建自己的函数吗? – AlanPHP 2012-04-08 20:23:53

+0

嗯,但你应用你的函数取得的值反正,而不是在WHERE标准。所以结果的数量与你的函数无关......但正如我所说的,你可以在MySQL中创建存储过程。 – ThiefMaster 2012-04-08 20:25:04

+0

我会研究一下。谢谢。 – AlanPHP 2012-04-08 20:25:44

1

我认为你不能在SQL中这样做。执行查询后,您可以使用这些功能。假设您使用的是旧的mysql_*功能:

<?php 
$result = mysql_query($query); 
$newResults = array(); 
$i = 0; 

while($row = mysql_fetch_assoc($result)) { 
    $newResults[$i]['atk'] = get_level($row['attack']); 
    $newResults[$i]['strength'] = get_level($row['strength']); 
    /** ect. **/ 
    $newResults[$i]['level'] = get_combat($newResults['atk'],$newResults['str'],$newResults['dex'],$newResults['con']); 
} 
+0

但是为数据库中的所有用户创建一个新阵列是多余的,不是吗?只是在说。 – AlanPHP 2012-04-08 20:32:00