2012-07-02 27 views
1

我在PHP开发中很新,我找不到解决我的问题的方法。
我必须清理我的Mysql数据库中的一些数据。我有一个像SQL结果中的最大和最小PHP函数

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

在我的数据库全时间段的date列,我想从中提取出最小和最大价值,让我只会有2个时间段离开。

我尝试这样做:

$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]在一个新的数组。

+1

PHP的'ext/mysql'('mysql_ *'系列)[已弃用](http://www.php.net/manual/en/faq.databases.php#faq .databases.mysql.deprecated)。请使用[其他](http://www.php.net/manual/en/mysqlinfo.api.choosing.php)。 – pilcrow

回答

0

假设DB“日期”字段包含一串数字分开;像您然后描述可以在该阵列

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

上使用的爆炸()函数把该字符串到一个数组,然后使用MAX()和MIN()如果SA每行一个号码,然后用做像在其他答案中描述的SQL

+0

您对我的字段“日期”包含由“;”分隔的一串数字。我试过这个:while($ result = mysql_fetch_array($ requete)) { $ res = $ result [date]; $ arr = explode(“;”,$ res); $ max = max($ arr); $ min = min($ arr); }不再有php函数错误,但它返回没有“;”的字符串,没有变化,没有最大值或最小值被隔离。 –

+0

而不是使用mysql_fetch_array尝试使用mysql_fetch_assoc,还要确保将字段名称放在qoutes中,例如$ arr [“date”],否则它会尝试寻找名为date的contstant(您可以使用没有qoutes的日期,但它使php“看“的日期字段,而不是刚刚到达那里) –

+0

那么为什么我被拒绝? –

5

在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']; 
+0

+1这解决了我的问题。谢谢! –