mysql DB からデータを取得しています。複数回の走行距離を加算して、最も長く走った人の順位で並べ替えたいと思います。
function determineLength($db, $name){
$getLength = "select length from $db where name = $name and sex = 'male'";
$gettingLength = mysql_query($getLength);
while($gotLenth = mysql_fetch_array($gettingLength)){
more code that calculates total length and returns it as $lengthAccumulator
}
return array('totalLength'=>$lengthAccumulator);
}
今、名前が変わることのない 30 人の異なる男性がいます。冗長性なしで各人に mysql コードを実行するにはどうすればよいですか? 私はこの方法でしか理解できません-
$name = john;
$a = determineLength($db, $name);
$aLength = $a['totalLength'];
$name = sam;
$b = determineLength($db, $name);
$bLength = $b['totalLength'];
$name = henry;
$c = determineLength($db, $name);
$cLength = $c['totalLength'];
$name = ted;
$d = determineLength($db, $name);
$dLength = $d['totalLength'];
次に、$aLength、$bLength、$cLength... を配列に格納し、そのように並べ替えます。冗長で遅いことは言うまでもなく、それは間違った方法のように思えます。DB には 40,000 行を超えるデータがあるため、この方法で実行しようとすると、DB を 120 万回以上実行することになります。名前の配列を関数に渡してから、mysql コードで ORDER BY length DESC を使用できますか?
助けが必要です。ありがとう!
****the answer below by zane seemed to work to order the runners, but
この方法を使用して実際のランクをエコーするにはどうすればよいですか? 彼の選択ステートメントを上記のステートメントに置き換えましたが、人のランクをエコーするにはどうすればよいでしょうか? 結果を配列に保存してから、キーをエコーできますか?