1

私はそれらのそれぞれがデータベース上で異なる合計を持っている配列を持っています(多分それらのいくつかは空であるか、それらのレコードがありません)

(私の配列上で)他のすべてよりも合計が大きいものを知り、その1つを$ bigger変数に入れる必要があります($ bigger = $ value)

私の試み:

$new = 0;
$myarray = array('2', '5', '17', '55');

foreach($myarray as $value) {
    $before = intval($new);

    $query = mysql_query("SELECT SUM(total) AS totals FROM table WHERE id='$value'");
    $result = mysql_fetch_assoc($query);
    $new = intval($result['totals']);

    if ($new > $before){
        $biggest=intval($value);
    }
}

しかし、それは新しいものが古いものよりも大きな価値を持っているかどうかを示すだけであり、それらすべてよりも大きくはありません

どんな助けでも大歓迎です

4

1 に答える 1

4

ループを完全に排除し、次のようにします。

$myarray = array('2', '5', '17', '55');
$query = "SELECT SUM(total) AS totals FROM table WHERE id IN (" . implode(', ', $myarray) . ") GROUP BY id ORDER BY totals DESC LIMIT 1";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);

ソートされた順序ですべてのIDのデータを受け取りたい場合は、LIMIT句を削除し、ループを追加して結果セットの各行を読み取ることができます。

mysql_*また、これらの関数は非推奨になっているため、使用しないことをお勧めします。PHPを学習しているだけの場合は、mysqli_*関数、PDO、または将来サポートされるものを使用して学習する必要があります。

また、データベースクエリの障害状態をテストする方法も学ぶ必要があります。私の例は単純な例ですが、本番コードではクエリとフェッチ操作の成功/失敗をテストする必要があります。

于 2013-01-09T19:47:12.777 に答える