2012-07-02 34 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這解決了我的問題。謝謝! –