2017-02-02 97 views
-1

我的代碼是如何選擇最大日期?

function lister($a,$con){ 
    $queryq = " SELECT * FROM note WHERE date= MAX(date) AND id='".$a."' AND admin='".$_SESSION['login_username']."' "; 
    $resultq = mysqli_query($con,$queryq) or die('Error: ' . mysqli_error($con)); 
    $arrayq=mysqli_fetch_array($resultq,MYSQL_NUM); { 
     echo $arrayq[4]; 
    } 
} 

有一個錯誤:

Error: Invalid use of group function

我在做什麼錯?

+1

爲什麼不在日期DESC上排序時檢索第一個響應?那真的是給你這個信息的代碼嗎?那是完整的信息嗎? –

+0

它的註釋表每個管理員可以添加註釋給用戶,我已經做了一個頁面來顯示用戶的所有註釋,現在我有一個用戶列表,我想顯示每個用戶的註記.thnx – Adaleni

+0

這是一個MySQL錯誤或PHP錯誤?你的問題在這方面不清楚。 –

回答

0

儘量拆分查詢

  $queryA = "SELECT date FROM `note` WHERE id='".$a."' AND admin='".$_SESSION['login_username']."' ORDER BY date DESC LIMIT 1"; 
     $resultA = mysql_query($con, $queryA); 
     $maxDatePerUser = mysql_fetch_array($resultA); 
     $queryq = " SELECT * FROM note WHERE id='".$a."' AND admin='".$_SESSION['login_username']."' AND date='" . $maxDatePerUser["date"] ."'"; 
     $resultq = mysqli_query($con,$queryq) or die('Error: ' . mysqli_error($con)); 
     $arrayq=mysqli_fetch_array($resultq,MYSQL_NUM); { 
+0

'$ queryq =「SELECT * from note WHERE'id' ='」。$ a。「'AND'admin' ='」。$ _ SESSION ['login_username']。''ORDER BY '日期'DESC「;' – Adaleni

0

問題是由各種各樣的循環引用引起的。

SELECT * FROM note WHERE date= MAX(date) AND id='".$a."' AND admin='".$_SESSION['login_username']."' " 

你問功能,基於同樣的事情來計算的東西 - 語句的條件是MAX(日期),但它不能計算出,直到它知道它是什麼。

最好的解決辦法是找到MAX(日)分別:

SELECT max(date) FROM note 

您可以添加額外的限制,如果需要的話,如果它是最大日WHERE,即

SELECT max(date) FROM note WHERE id='".$a."' AND admin='".$_SESSION['login_username']."' " 

一旦你有這個,你可以在查詢中彈出它:

SELECT * FROM note 
    WHERE date = (SELECT max(date) 
        FROM note 
        WHERE id = '" . $a . "' 
        AND admin = '" . $_SESSION['login_username'] . "') 
    AND id = '" . $a . "' 
    AND admin = '" . $_SESSION['login_username'] . "'; 

很難得到查詢100%正確witho讓數據進行測試,但這應該起作用。