前言: 在具體回顧每個功能的實現前,仍是有必要先溫習一些項目涉及到的PHP、MySQL【語法基礎】。項目github地址:https://github.com/66Web/php_book_store,歡迎Star。javascript
1、PHP基礎語法php
<?php echo "Hello world"; ?>
輸出語句:echo語句,每條語句後都須要加分號「;」結束css
<?php echo "歡迎","學習PHP" ?>
註釋語句html
① /* 開始 多行註釋 …… */結束 ② // 單行註釋 ③ # 單行註釋
變量-命名與賦值:java
變量名必須以‘$’符號開頭mysql
$bookname = 'PHP程序設計'
變量名的第一個字符必須是字母或下劃線,後面能夠是字母、數字或者下劃線組合git
變量名嚴格區分大小寫,若是兩個變量只是大小寫不一樣,被視爲兩個變量github
一般命名變量、賦值一塊兒進行ajax
$_price = 36
變量-數據類型:PHP支持8種數據類型,包括——4種標量類型、2種複合類型、2種特殊類型sql
數據類型轉換:自動轉換 VS 強制轉換
" + ":會將字符轉換成數值
" . ":會將數字轉換成字符
使用單引號:程序不會判斷字符串中是否含有變量,會將所有內容當作字符串輸出
使用雙引號:會首先判斷字符串中是否含有變量,若是有變量會直接輸出變量的值
PHP轉義字符
\" 雙引號 \\ 反斜槓 \n 換行 \r 回車 \t 製表符 \$ 美圓符號 \x 十六進位字符
常量
系統預約義常量
PHP_VERSION PHP程序的版本
自定義常量:經過define()函數定義,不能經過賦值語句賦值
① 常量的值只能是標量 <標量類型是數據結構種最基本的單元, 同一時刻只能存儲一個數據>
② 常量前面沒有 $ 符號 <?php define("COPYRIGHT", "Copyright © 2011, www.bvtc.com.cn"); echo COPYRIGHT; ?>
算術運算符:7個
+ 加法運算符 - 減法運算符 * 乘法運算符 / 除法運算符 % 取餘數運算符 ++ 自加運算符 -- 自減運算符 echo $init_a ++;
字符串運算符
. :將兩個字符串鏈接起來保存到一個新的字符串中
<?php $str_var1 = "城市,"; $str_var2 = "讓生活更美好!"; echo $str_var1 . $str_var2; //實現字符串的鏈接 「城市,讓生活更美好!」 ?>
賦值運算符
= : 「被賦值爲」或「被設置爲」,不是等於
複合賦值運算符:對一個變量進行運算,而後將運算結果賦值給原來的變量
+= -= *= /= %= . = (將左邊的字符串鏈接到右邊)
$a .= $b => $a = $a . $b
位運算符:將一個整型變量當作一系列的位(bit)來處理
& 與 | 或 ^ 異或 << 左移 >> 右移 ~ 取反
比較運算符:經過比較兩個數據的大小來返回真值或假值(一般用在 條件判斷 和 循環處理中)
< 小於 > 大於 == 等於 === 恆等於(值與數據類型) <= 小於等於 >= 大於等於 != 不等 !== 不等於
邏輯運算符
&& 與 || 或 ! 非 xor 異或(一個爲真時返回真;兩個同樣時,爲假)
三元運算符
? : 與if條件語句做用相同
其它運算符
$ 變量定義 & 變量地址 @ 屏蔽錯誤信息 → 引用對象方法或屬性
<?php $var = "圖書商城" echo $var; die("程序終止"); //圖書商城程序終止 echo "該語句不會被執行"; ?>
empty():用於檢查變量是否爲0 或者 空值,如爲0 或 空值 返回true, 不然false
is_bool():用於檢測某變量是不是布爾值
abs():返回給定數值表達式的絕對值
<?php echo abs(-1); //1 ?>
ceil():上取整,返回大於參數的最小的整數
<?php echo ceil(1.1); //2 echo ceil(-1.1); //-1 ?>
floor():下取整,返回小於參數的最大的整數
<?php echo floor(1.1); //1 echo floor(-1.1); //-2 ?>
round():返回四捨五入的結果數
min():返回該數組中的最小值
max():返回該數組中的最大值
rand():返回一個隨機數
函數-自定義函數
經過function定義,直接使用函數名稱進行函數的調用
<?php funtion fun_add($int_n){ $int_sum = 0; for($int_i = 1; $int_i <= $int_n; $int_i++){ $int_sum += $int_i; } echo $int_sum; } fun_add(0); ?>
參數傳遞-值傳遞
值傳遞:參數在調用函數先後不會發生改變,傳遞給函數的只是該參數的值
參數傳遞-引用傳遞
若是但願在函數內部修改參數值,且函數外部也能同時改變該參數的值,在傳遞的參數前面加 &
引用傳遞:將實參在內存的地址傳遞給相應的形參,形參的值發生改變的同時,實參也發生改變
<?php function change(&number){ $number = $number * 2; echo '函數內部 $number = ' . $number; } $number = 10 //實參 change(&number); echo '<p>函數外部$number=' . $number . '</p>'; ?>
數組
建立空數組,並添值 => 給數組元素賦值
$list = []; $list[] = ["bid" => 101, "title" => "西遊記"]; $list[] = ["bid" => 102 , "title" => "西遊記前傳"]; $list[] = ["bid" => 103, "title" => "西遊記後轉"];
關聯數組
$arr = ["eid" => 102, "ename" => "james"];
遍歷數組 與js不一樣
//PHP $arr沒有 .length屬性 -> count($arr) for($i = 0; $i < count($arr2); $i++){ echo $arr2[$i]; }
更簡單的 foreach
foreach($arr2 as $k => $v){ echo "$k = $v<br/>"; //雙引號直接把變量輸出 }
*注意: php5.3- => $arr1 = array(10, 20, 30);
php5.4+ => $arr2 = [10, 20, 30];
x.php -> $uname = $_REQUEST["uname"]; http://127.0.0.1/x.php?uname=tom&age=10
表單的name屬性傳遞
x.php -> $uname = $_REQUST["uname"];
html ↓ <form action="x.php" method="post"> <input type="text" name="uname"/> <input type="submit" value="ok" /> </form>
經過js自動傳遞
<script> location.href = "x.php?uname=tom" </script>
或 <a>的href跳轉連接帶參數傳遞
<a href="x.php?uname=tom"></a>
PHP表單處理
PHP中使用全局變量 $_GET 和 $_POST 來接收表單中提交的數據
在PHP程序的任何部分均可以調用這些全局變量
<form action=" " method="post" > 用戶名:<input type="text" name="username" /><br/> 密碼: <input type="text" name="paw"/></br> <input type="submit" name="submit" value="提交"/> <input type="reset" name="reset" value="重置"/> </form>
經過 $_POST接收
<?php echo "用戶名:" . $POST['username']; //輸出以POST方法提交的用戶名 對應input框的name名(惟一) echo "<br/>"; echo "密碼爲:" . $POST['paw']; //輸出POST方法提交的密碼 ?>
經過 $_GET接收
<?php echo "用戶名:" . $_GET['username']; //輸出以GET方法提交的用戶名 對應input框的name名(惟一) echo "<br/>"; echo "密碼爲:" . $_GET['paw']; //輸出GET方法提交的密碼 ?>
2、MySQL基礎語法
mysql -uroot -p
DDL數據定義:CREATE 建立庫 / 建立表 (2種)
① CREATE DATABASE 庫名 CHARSET = UTF8; ② CREATE TABLE 表名( 列名1 列類型, …… …… );
① INSERT INTO 表名 VALUES(值1, 值2, ……); ② UPDATE 表名 SET 列1 = 新值1, 列2 = 新值2 WHERE 條件; ③ DELETE FROM 表名 WHERE 條件;
DQL查詢數據
① SELECT * FROM 表名; //查詢全部列 ② SELECT 列名1, 列名2 …… FROM 表名 WHERE 條件; //多條件用 AND / OR / NOT ORDER BY 列名稱; //依照**排序,默認升序 降序後跟DESC
DROP刪除
刪除指定庫,指定表 很難恢復,通常不操做
LISE 庫名; //進入數據庫 SHOW DATABASES; //查看全部數據庫
列數據類型
phone (int放不下) upwd 密碼 jpg/pic 也是字符串類型 — 「1.jpg」
double(n,m) 浮點數(小數) double(10,2) -> 總長度10位,其中包括2位小數
datetime 日期時間 ‘1997-11-20’
decima(n,m) 高精度的浮點數 eg:Salary 工資
SELECT e.eid, e.salary, d.dname FROM dept d, emp e WHERE e.did = d.did
查詢能夠嵌套
SELECT * FROM emp; WHERE did = (SELECT did FROM dept WHERE dname='市場部'); //did 是兩表聯繫 -> 查找條件,再查找
精確查詢
SELECT 列名 FROM 表名 WHERE did = 3; SELECT 列名 FROM 表名 WHERE name = '雞蛋';
模糊查詢
SELECT 列名 FROM 表名 WHERE 列名 LIKE '%關鍵字%'; 包括關鍵字
'關鍵字%'; 以關鍵字開頭
'%關鍵字'; 以關鍵字結尾
- 匹配單個字符
SELECT 列名 FROM 表名 LIMIT 起始行, 行數;
UPDATE car SET tid = 2 WHERE cid in (3,5,7,9);
CREATE DATABASE 庫名 CHARSET = UTF8; //UTF8 支持全世界語言 SET NAMES GBK; //GBK 國家標準
html;css; js; php utf-8
<?php header(*Content-Type: application/json; charset:utf-8"); $conn = mysqli_connect("127.0.0.1", "root", " ", "weixin", 3306); mysqli_query($conn, "SET NAMES UTF8"); ?>
Add to path C:\xampp\mysql\bin C:\xampp\apache\bin
MySql必須加 主鍵自增加(速度快)
id INT PRIMARY KEY AUTO_INCREMENTSELECT max(sal), min(sal), avg(sal), sum(sal), count(sal) FROM emp;
MySql完整建立用戶表
mysql -uroot -p CREATE DATABASE weixin CHARSET=UTF8 USE weixin; #用戶表 CREATE TABLE wxuser( uid INT PRIMARY KEY AUTO_INCREMENT, uname VARCHAR(30), upwd VARCHAR(30) ); SET NAMES GBK; INSERT INTO wxuser VALUES(null, '17712345678', '123456'); SELECT * FROM wxuser;
3、Ajax基礎知識
text/plain 純文本 text/html 文本與網頁 application/javascript JS代碼 application/json json格式數據 application/xml xml格式數據
txt 純文本
//PHP中:修改響應頭中數據格式 header("Content-Type:text/plain; charset:utf-8"); echo "hello";
//ajax中: xhr.responseText;
//js文件時: eval(xhr.respnseText)
json 格式數據
//PHP中:修改響應頭中數據格式 header("Content-Type:application/json; charset:utf-8"); echo "json_encode($row)";
//ajax中 xhr.responseText;
萬能的Ajax封裝函數$.ajax() —— jQuery中
$.ajax({ type: 'GET', //請求方式 GET/POST url: 'data/login_do.php', //請求程序地址(必選) data: {uname:u, upwd:p}, //提交給服務器參數, 一個key,一個value success: function(data){ //響應完成而且成功調用函數 var rs = parseInt(data); if(rs<0){ $("p.alert").html("用戶名或密碼錯誤") }else{ $(".model").hide(); } }, error: function(){ //響應完成而且失敗調用函數 } }); //beforeSend:fn —— 請求消息發送以前調用函數 //complet:fn —— 響應完成後不管成敗調用函數
注:轉載請註明出處