1

データベースに 4 つの列があります。Atk、Str、Dex、Con。それぞれが INT であり、これらの 4 つの列を取り、それらの正しいレベルを決定する PHP 関数 get_level があります。これらの「レベル」に基づいて、特定の範囲内のすべてのユーザーを選択しようとしています。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 に答える