本人用ThinkPHP3.2,今天正在開發一個需要分組顯示的功能,可是從數據庫中把相應數據讀取后直接用group分組,結果每組顯示的是最老的記錄,我的需求是要顯示每組的最新記錄。在網上大搜一翻后,未果,本人決定自行研究,現將方法記錄于此以防遺忘。
在浚縣等地區,都構建了全面的區域性戰略布局,加強發展的系統性、市場前瞻性、產品創新能力,以專注、極致的服務理念,為客戶提供成都網站設計、網站制作 網站設計制作按需開發,公司網站建設,企業網站建設,品牌網站設計,成都全網營銷推廣,外貿營銷網站建設,浚縣網站建設費用合理。
其實很簡單,以供就兩步:
第一步:
將符合條件的數據全部取出,暫不用group分組,作為子查詢:
[php]?view plain?copy
$subQuery?=?$model-field('id,name')-table('tablename')-where($where)-order('time?desc')-select(false);
第二部:
利用子查詢進行查詢分組
[php]?view plain?copy
$model-table($subQuery.'?a')-group('field')-select();span?style="font-family:?Arial,?Helvetica,?sans-serif;"?/span
好了,思路就是這樣。希望對大家有幫助!
一般的表都有一個遞增的id字段吧。。。
最后提交的10條數據,即為前10個最大id的記錄
可以先對id從大到小排序后后取最前面10條即可
$sql="select * from table order by id desc limit 10";
$result=mysql_query($sql);
order by id desc 表示按id字段逆序排列
limit 10 表示最大取10條記錄
試編寫代碼示例如下:
?php
//連接數據庫
$db?=?new?mysqli('localhost','test','test','test');
if?($db-connect_errno)?{
printf("連接數據庫失敗:?%s\n",?$db-connect_error);
exit();
}
//對數據庫根據時間字段按降序排序,并抽取前面的40條記錄
$data?=?$db-query('select?*?from?數據表名?order?by?時間字段名?desc?limit?40');
$rows?=?$data-fetch_all(MYSQLI_ASSOC);
//隨機生成?5?條記錄數組
$rand_arr?=?array_rand($rows,?5);
//根據生成的隨機數組,輸出記錄
for($i=0;$i5;$i++)
{
echo?$rows[$rand_arr[$i]]['name'].'?|?'.$rows[$rand_arr[$i]]['description'].'?|?'.$rows[$rand_arr[$i]]['update_time'].'br/';
}
?
示例運行截圖:
利用自增字段,把要查詢的數據表的id設置為自增。查詢數據時,order by id desc,取第一條就是最新的。
利用時間,要查詢的數據表中增加時間字段,查詢時,order by time desc,取第一條就是最新的。
有很多方法的呀,
1)字符串截取,$result
=
substr($whole,
0,
4);
2)用空格分割字符串到數組中:$ary
=
explode('
',
$whole);
$result
=
$ary[0]
$sql="select * from mytb order by time desc limit 5"
不足5條,沒關系。
凡事多嘗試。
網站欄目:php取最新數據,php獲取mysql數據
新聞來源:http://m.kartarina.com/article14/hegdde.html
成都網站建設公司_創新互聯,為您提供網站制作、App開發、做網站、營銷型網站建設、品牌網站建設、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯