2012-03-03 67 views
1

我想在php中顯示mysql表的特定列的最大值。這裏是我的代碼:在php中顯示mysql表列的最大值?

<?php 
     mysql_connect("localhost","root","") or die(mysql_error()); 
     mysql_select_db("database") or die(mysql_error()); 

     $var = $_POST['value']; 
     $sql = mysql_query(" SELECT MAX(column) FROM tableName WHERE variable='$var' ") or die(mysql_error()); 

     $row = mysql_fetch_array($sql) or die(mysql_error()); 

     echo "Maximum value is :: ".$row['column']; 
    ?> 

輸出:::

Maximum value is :: 
+0

這很可能意味着您的WHERE條件不會返回任何行。 – 2012-03-03 21:37:38

+0

'$ row ['MAX(column)']'或'$ row [0]'都可以工作,但不是'$ row ['column']''。看到我的答案。 – 2012-03-03 21:49:10

回答

0

列的真名是MAX(column),嘗試:

print_r($row); 

你既可以做:

$sql = mysql_query(" SELECT MAX(column) AS `column` FROM tableName WHERE variable='$var' ") or die(mysql_error()); 

或者:

$row = mysql_fetch_row($sql) or die(mysql_error()); 
echo "Maximum value is :: ".$row[0]; 
+0

如何通過此查詢使用另一列。 – sabbir 2012-03-03 21:51:35

+0

@sabbir對於第二個查詢,第一種方式'SELECT MAX(column)as \'column \',second,third,..'嘗試'print_r($ row)':) – Vyktor 2012-03-03 22:01:09

0

你有兩種選擇。按索引或按列名稱。如果您確實想要使用列名,請在查詢中爲列添加別名。

$sql = mysql_query(" SELECT MAX(column) `max` FROM tableName WHERE variable='$var' ") or die(mysql_error()); 

然後你可以使用

$row['max']; 

$row[0]; 
0

你可能不返回任何行。你應該嘗試使用WHERE變量LIKE'%$ var%';

3

或者你可能有點創意:

$sql = mysql_query("SELECT `column` FROM tableName WHERE variable='$var' ORDER BY `column` DESC LIMIT 1") or die(mysql_error()); 
+0

是的,顯式選擇所有記錄而不僅僅是獲得第一個。 :) – Vyktor 2012-03-03 22:00:13

+0

我喜歡這種風格嘿嘿,但它是相同的 – 2013-02-19 03:50:33

0
 $sql = mysql_query(" SELECT MAX(column) AS GIVE_A_NAME FROM tableName WHERE variable='$var' ") or die(mysql_error()); 

 echo "Maximum value is :: ".$row['GIVE_A_NAME']; 
1

這就是我正在尋找一個解決同樣的問題。下面的方法工作。該解決方案使用「MYSQLI_NUM」。雖然下面的代碼給出了預期的結果,但它仍然看起來太複雜。有沒有辦法使用「while」語句「快捷方式」來搜索數組,因爲只有一個返回值?

選擇一個最大值只返回一個數字,但PHP似乎仍然需要一個循環來評估整個數組。我期待一些簡單的事情,比如:max_value = result(0)。

<?php 

    require_once 'login.php'; 
    $conn = new mysqli($hn, $un, $pw, $db); 
    if ($conn->connect_error) die($conn->connect_error.' Sorry, could not connect to the database server'); 

     $query = "SELECT MAX(IssueIDNUM) FROM tblIssueList"; 

     $result =$conn->query($query); 
     if (!$result) die($conn->error); 

     while($row=mysqli_fetch_array($result, MYSQLI_NUM)) 
     { 
      $maxresult=$row[0]; 
      echo $maxresult;    
     } 

    $result->close(); 
    $conn->close(); 

?> 

隨着進一步的實驗,我還能夠修改Jim H.的代碼來開發以下解決方案。儘管它起作用,但代碼似乎仍然過於複雜。

// Solution #2 
     $result =$conn->query("SELECT MAX(IssueIDNUM) `max` FROM tblIssueList");  
     if (!$result) die($conn->error); 
     while($row=mysqli_fetch_array($result, MYSQLI_ASSOC)) 
     { 
      echo $row['max']; 
     }