『壹』 php中用time()函數存入時間,如何查詢當月的數據
這個time()函數是將時間保存成時間戳格式,則要查當月數據,只要查當月第一天到當月最後一天的之間的數據即可。
假設這個用來判斷的欄位是date
sql語句
SELECT ………… WHERE………… `date` >= 本月第一天的time值 AND `date` < 下個月第一天的time值
所以這里就只要獲取當月第一天以及下個月第一天的時間戳
具體如下:
<?php
$cur = date('Y-m',time());//當天年月
$cur_y = date('Y',time());//當天年份
$cur_m = date('m',time());//當天月份
$cur_f = $cur . '-1';//本月首日
$first = strtotime($cur_f);//時間戳最小值,本月第一天時間戳
//下月首日
if($cur_m>=12){
$cur_n = ($cur_y+1) . '-1-1';
}else{
$cur_n = $cur_y . '-' . ($cur_m+1) . '-1';
}
$last = strtotime($cur_n);//時間戳最大值,下個月第一天時間戳
?>
再把$first 和 $last 放入sql語句裡面就可以查詢到數據了
『貳』 PHP中高級面試題 – 第一天
一、寫一個函數,獲取一篇文章內容中的全部圖片,並下載
二、什麼是 CSRF 攻擊?XSS 攻擊?如何防範?
CSRF:跨站請求偽造,可以通過通過判斷來源和加 Token 的方式來防範。
XSS:跨站腳本攻擊,可以通過對內容轉義和過濾來防範,還有 CSP
三、應用中我們經常會遇到在 user 表隨機調取 10 條數據來展示的情況,簡述你如何實現該功能。
四、MYSQL 中主鍵與唯一索引的區別
主鍵:絕對不能有空值。唯一索引:可以有空值
五、http 與 https 的主要區別
關鍵是 S 上。簡而言之,https 建立連接後要先把 SSL 的證書發下去,有了公鑰和私鑰,就可以解密了。
六、兩台 mysql 伺服器,其中一台掛了,怎麼讓業務端無感切換,並保證正常情況下講台伺服器的數據是一致的
不是核心業務的話,先停寫,把備機拉起來,查看兩台機器的日誌,進行數據補償,開寫。
如果是核心業務的話,現在所有的操作都在正常的狀態機器上。把好的這台機器的備機拉起來,當主機。
以上全是應急操作。實際上資料庫的容災設計要復雜得多。
面試官要是問你,備機的數據不一致怎麼辦,你要勇敢懟回去,你們每秒多少寫入操作。按照百萬級表,每秒 1000 的寫入效率,正常的設計是,分布在 2 台機器上每台 500。這個級別的數據同步,出現差異的概率 可以忽略不計的。有一台出現問題,另一台也可以抗住。
(正常的操作,還是先停寫,等數據一致,切換,開寫。我們公司搞這些切換都是在凌晨 4.00 左右,核心業務的每秒寫操作,只有十幾個。前後耽擱不到 20 秒)。
七、10 瓶水,其中一瓶有毒,小白鼠喝完有毒的水之後,會在 24 小時後死亡,問:最少用幾只小白鼠可以在 24 小時後找到具體是哪一瓶水有毒。
答案:四隻
二進制問題。薛定諤的老鼠。
一隻老鼠有兩個狀態,死活,對應 01。假設老鼠的個數為 A,則有 2^A>=10; A=4;
思路很簡單,十瓶葯編號:0,1,10,11….1001;
0 不喝。第一隻老鼠喝所有個位是 1 的:13579,第二隻喝十位是 1 的,第三隻和百位是 1 的,第四隻喝千位是 1 的。
24 小時後,看下死了的是 1,活著的是 0。按老鼠的順序乖乖站好…… 假如第一隻和第三隻死了,那就是 0101,就是 5 有問題。
『叄』 如何獲取當前月份的下一月的第一天 php
date_default_timezone_set("PRC");
functiongetNextMonthDays($date){
$timestamp=strtotime($date);
$arr=getdate($timestamp);
if($arr['mon']==12){
$year=$arr['year']+1;
$month=$arr['mon']-11;
$firstday=$year.'-0'.$month.'-01';
}else{
$firstday=date('Y-m-01',strtotime(date('Y',$timestamp).'-'.(date('m',$timestamp)+1).'-01'));
}
return$firstday;
}
$date=date('Y-m-d');
echogetNextMonthDays($date);
『肆』 php求當前季度的第一天和最後一天
$date = getdate();
$month = $date['mon']; //當前第幾個月
$year = $date['year']; //但前的年份
$strart = floor($month/3) * 3; //單季第一個月
$strart = mktime(0,0,0,$start,1,$year); //當季第一天的時間戳
$end = mktime(0,0,0,$start+3,1,$year); //當季最後一天的時間戳