【问题标题】:Max and min PHP function from SQL resultSQL 结果中的最大和最小 PHP 函数
【发布时间】:2012-07-03 02:11:55
【问题描述】:

我是 PHP 开发新手,找不到解决问题的方法。
我必须清理 Mysql 数据库中的一些数据。我的数据库中有一个date 列,里面有很多时间段,比如

-520;-510;0;-500;-530;-599;-499;-510;-490;-500;0;-450 

我想从中提取最小值和最大值,这样我就只剩下两个时间段了。

我试过这个:

$sql = "SELECT date FROM records WHERE serial = 1";
$requete = mysql_query($sql,$cnx) or die(".mysql_error().");
while($result = mysql_fetch_array($requete))
{
    $res = $result[date];
    $min = min($res);
    $max = max($res);
}

我知道它不能工作,因为 min 和 max 函数仅适用于数组,但我不知道如何将我的 $result[date] 转换为新数组。

【问题讨论】:

标签: php sql arrays max min


【解决方案1】:

在 SQL 中执行此操作,这样的事情应该可以工作:

$sql = "SELECT MAX( date) as maximum, MIN( date) as minimum
            FROM records 
        WHERE serial = 1
        GROUP BY serial";

然后要检索结果,你需要一行:

$requete = mysql_query($sql,$cnx) or die( mysql_error());
$row = mysql_fetch_array($requete);
echo $row['maximum'] . ' ' . $row['minimum'];

【讨论】:

    【解决方案2】:

    假设数据库的“日期”字段包含一串由 ; 分隔的数字就像您描述的那样,您可以使用 explode() 函数将该字符串转换为一个数组,然后在该数组上使用 max() 和 min()

    $arr = explode(";",$string);
    $max = max($arr);
    $min = min($arr);
    

    如果它是每行一个数字,则使用 SQL 执行,如另一个答案中所述

    【讨论】:

    • 你说得对,我的字段“日期”包含一串用“;”分隔的数字。我试过这个:while($result = mysql_fetch_array($requete)) { $res = $result[date]; $arr = explode(";",$res); $max = max($arr); $min = min($arr);不再有 php 函数错误,但它返回我的字符串没有“;”,没有变化,没有孤立的最大值或最小值。
    • 而不是使用 mysql_fetch_array 尝试使用 mysql_fetch_assoc,还要确保将字段名称放在像 $arr["date"] 这样的 qoutes 中,否则它将尝试寻找一个名为 date 的常量(您可以使用 date with没有 qoutes 但它使 php “查找”日期字段而不是仅仅到达那里)
    • 我正在尝试投票,但它不起作用。谢谢你的帮助。真的很有用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 2015-07-30
    • 2016-04-04
    相关资源
    最近更新 更多