1

我的数据库中有 4 列。攻击、力量、敏捷和体质。每个都是 INT,然后我有一个 PHP 函数 get_level,它采用这 4 列并确定它们的正确级别。我正在尝试根据这些“级别”选择给定范围内的所有用户。get_combat 函数采用这 4 个值并找到用户的战斗级别。这就是我所拥有的,它不起作用。

<?PHP 
$query = "SELECT get_level(attack) as atk,
    get_level(strength) as str,
    get_level(dexterity) as dex,
    get_level(constitution) as con,
    get_combat(atk,str,dex,con) as level 
    FROM `users` 
    WHERE level > 5 AND level < 10"; 
?>

有没有办法做到这一点?

4

2 回答 2

3

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

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

根据函数的复杂程度,您还可以在数据库中创建存储过程。但是,您不能在该函数中编写 PHP 代码。

于 2012-04-08T20:21:07.453 回答
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']);
}
于 2012-04-08T20:25:39.683 回答