PHP、mySQL
相關知識
HTML:網頁的結構
CSS:網頁的樣式
JavaScript:網頁的行爲
網站分爲靜態網站與動態網站
靜態網站:咱們以前使用HTML+CSS+JavaScript實現的就是靜態的網站!它沒有與數據進行交互!
動態網站:咱們作的網頁可以與服務端的數據進行交互(數據庫)!HTML網頁不能與數據庫進行交互!
服務端語言必須運行在web服務器下。
如 PHP運行在apache服務器下,java運行在tomcat服務器下,C#運行在IIS服務器下...
服務端語言的優點:
1. 開發web動態網站
2. 操做硬盤文件
3. 操做數據庫(mysql)
4. 給前端提供數據接口,實現先後端數據分離
......
要將本身的電腦做爲web服務器,須要安裝一些軟件來提供http服務。
之前實現web動態網站須要獨立安裝apache、mysql、php三個軟件,可是安裝、配置起來比較繁瑣。
因此有人將apache、mysql、php這三個軟件集成到一塊兒,這種軟件咱們稱之爲集成環境。
IP地址與域名
IP地址能夠定位到網絡上惟一的一臺計算機,但IP地址很不方便記憶!
域名用於在數據傳輸時標識計算機的電子方位(有時也指地理位置)。
IP地址與域名猶如一我的的身份證號與姓名。
DNS
DNS(Domain Name System,域名系統)用來將域名解析爲對應的IP地址 ,DNS服務器安裝在網絡運營商的機房裏面!
HTTP協議
HTTP: 超文本傳輸協議(英語:HyperText Transfer Protocol,縮寫:HTTP)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議。
HTTPS:超文本傳輸安全協議(英語:HyperText Transfer Protocol Secure,縮寫:HTTPS )是以安全爲目標的HTTP通道,簡單講是HTTP的安全版。
經過HTTP或者HTTPS協議請求資源
URI,即Uniform Resource Identifier,統一資源標識符,用來惟一的標識一個資源。
URL,即Uniform Resource Locator,統一資源定位符(在瀏覽器的地址欄裏的網站地址),它是一種具體的URI。
端口號
一臺擁有IP地址的主機能夠提供許多服務,好比Web服務、FTP(文件傳輸協議)服務、SMTP(郵件傳輸協議)服務等,這些服務徹底能夠經過1個IP地址來實現。
那麼,主機是怎樣區分不一樣的網絡服務呢?
顯然不能只靠IP地址,由於IP 地址與網絡服務的關係是一對多的關係。
其實是經過IP地址+端口號來區分一臺電腦上不一樣的服務的。
http協議默認是80端口
https協議默認是443端口
apache服務器默認端口是80
mysql服務器默認端口是3306
web請求基本流程
什麼是 PHP?
PHP(英文:PHP: Hypertext Preprocessor,中文:「超文本預處理器」);
PHP 是一種建立動態交互性站點的強有力的服務器端腳本語言;
PHP 是一種被普遍使用的開源腳本語言,能夠無償使用;
PHP 文件的後綴是 ".php";
PHP 文件可以包含文本、HTML、CSS 、JS以及 PHP 代碼;
PHP 代碼在服務器上執行,而結果以純文本返回瀏覽器。
PHP 基本語法
PHP 腳本以 <?php 開頭,以 ?> 結尾
PHP 中的註釋
<?php
// 這是單行註釋
# 這也是單行註釋
/*
這是多行註釋塊
它橫跨了
多行
*/
?>
PHP 輸出語句
echo 一次能夠輸出多個值,多個值之間用逗號分隔
print 一次只能輸出一個值,並始終返回 1
print_r() 函數用於打印變量,以更容易理解的形式展現
var_dump() 函數顯示關於一個或多個表達式的結構信息,包括表達式的類型與值
die() 函數輸出一條消息,並退出當前腳本
exit() 函數輸出一條消息,並退出當前腳本
PHP 字符串
php中字符串型能夠用三種方法定義:單引號形式、雙引號形式和Heredoc結構形式
當單引號中包含變量時,變量會被當作字符串輸出。
當雙引號中包含變量時,變量會被解析並與雙引號中的內容拼接在一塊兒。
PHP中兩個字符串拼接使用點號(.)鏈接起來。
<?php
$a = 'hello';
$b = 'abc $a';
$c = "abc $a";
echo $b; //
abc $a
echo $c; //
abc hello
echo 'abc ' . $a; //
abc hello
?>
使用Heredoc結構形式的方法來解決輸出大量字符串的問題:
首先使用定界符表示字符串(<<<),接着在「<<<「以後提供一個標識符,
而後是要輸出的字符串,最後以提供的這個標識符結束字符串。
PHP 中的大小寫
PHP中的變量名稱對大小寫敏感;
PHP中的函數、類和關鍵詞(例如 if、else、echo 等等)都對大小寫不敏感。
PHP 變量
變量以 $ 符號開頭,其後是變量的名稱
變量名稱必須以字母或下劃線開頭
變量名稱不能以數字開頭
變量名稱只能包含字母數字字符和下劃線(A-z、0-9 以及 _)
變量名稱對大小寫敏感($y 與 $Y 是兩個不一樣的變量)
PHP 沒有建立變量的關鍵字
變量會在首次爲其賦值時被建立:
<?php
$txt = "Hello world!";
$x = 5;
$y = 10.5;
?>
PHP與JavaScript都是弱類型、鬆散類型的腳本語言!
Local 和 Global 做用域
<?php
$x=5;
// 全局做用域
function myTest() {
$y=10;
// 局部做用域
echo "<p>在函數內部測試變量:</p>";
echo "變量 x 是:$x";
//空
echo "<br>";
echo "變量 y 是:$y";
//輸出10
}
myTest();
echo "<p>在函數以外測試變量:</p>";
echo "變量 x 是:$x";
//輸出5
echo "<br>";
echo "變量 y 是:$y";
//空
?>
PHP 數據類型
在PHP中有八種數據類型:
- 四種標量類型
布爾型(boolean)
整型(integer)
浮點型(float)
字符串(string)
- 兩種複合類型
數組(Array)
對象(Object)
- 兩種特殊類型
null
資源(Resource)
PHP 數組
數組是特殊的變量,它可以在單獨的變量名中存儲一個或多個值。
在 PHP 中,有三種數組類型:
索引數組 - 帶有數字索引的數組
關聯數組 - 帶有指定鍵的數組
多維數組 - 包含一個或多個數組的數組
索引數組是指數組的鍵是整數,而且鍵的整數順序是從0開始
有兩種建立索引數組的方法:
自動分配索引(索引從 0 開始)
用array()建立一個數組直接賦值,數組會默認創建從0開始的整數鍵
$arr1 = array('a','b','c','d');
print_r($arr1);
手動分配索引
用變量的名字後跟一箇中括號的方式賦值,中括號內的鍵必須是整數
$arr2[1] = 'a2';
$arr2[3] = 'b2';
$arr2[5] = 'c2';
$arr2[7] = 'd2';
print_r($arr3);
關聯數組是使用您分配給數組指定鍵的數組,通常數組的鍵是字符串
建立關聯數組有兩種方式:
$arr3['one'] = '星期1';
$arr3['two'] = '星期2';
$arr3['three'] = '星期3';
$arr3['four'] = '星期4';
print_r($arr3);
$arr4 = array(
'one'=>'星期11',
'two'=>'星期22',
'three'=>'星期33',
'four'=>'星期44'
);
print_r($arr4);
$arrlength = count($arr); 函數用於返回數組的長度(元素個數)
遍歷數組 foreach循環能夠將數組裏的全部鍵/值都訪問到
$arr5 = array(
'one'=>'html',
'two'=>'css',
'three'=>'js',
'four'=>'php',
'five'=>'mysql'
);
foreach
($arr5
as
$k => $v) {
if ($v == 'php') {
echo "php這個值對應的key是:".$k;
}
}
PHP 超全局變量
超全局變量在 PHP 4.1.0 中引入,是在所有做用域中始終可用的內置變量。
PHP中的許多預約義變量都是「超全局的」,這意味着它們在一個腳本的所有做用域中均可用。
如:$_GET、$_POST、$_REQUEST、$GLOBALS、$_FILES、$_COOKIE、$_SESSION等等。
$_GET 變量是一個數組,內容是由 GET 方法發送的鍵值
$_POST 變量是一個數組,內容是由 POST 方法發送的鍵值
form用get方式傳參,參數值會在url地址後面,如:index.php?k1=v2&k2=v2
form用post方式傳參,參數值不會在url地址後面
接收get參數: $_GET['表單name名稱']
接收post參數: $_POST['表單name名稱']
post比get相對來講更安全,由於post傳參不會暴露在url地址欄上面。
mySQL數據
header("Content-type:text/html;charset=utf8");
數據庫:顧名思義,就是存儲數據的倉庫。
MySQL是一種關聯數據庫管理系統,關聯數據庫將數據保存在不一樣的表中,而不是將全部數據放在一個大倉庫內,這樣就增長了速度並提升了靈活性。
MySQL是一個輕量級的數據庫,與PHP配合使用效果很是好,MySQL支持大部分SQL語句。
常見的數據庫:oracle、mysql、sql server
安裝mysql
wamp集成環境中已經自帶mysql。安裝wamp時,已經安裝上了mysql軟件。
要想操做mysql中的數據,咱們須要使用一種語言叫作sql來實現。
SQL(Structured Query Language) 是一種結構化查詢語言,使用它能夠對數據庫中的數據進行增刪改查。
編寫sql語句
mysql安裝的時候默認自帶客戶端和服務端的,在mysql客戶端中編寫sql就能夠操做數據庫中的數據。
使用mysql客戶端,須要在cmd中進入到mysql安裝的bin目錄中,執行如下命令:
mysql -u 用戶名 -p 密碼
敲回車就進入到了mysql模式的交互環境了,此時能夠寫sql語句進行數據庫的操做。
設置中文(window下)
set names utf8;
set character_set_database=utf8;
set character_set_server=utf8;
set character_set_client=gbk;
set character_set_connection=gbk;
show variables like "character%"; #查看數據庫的默認編碼格式
數據庫操做相關sql語句
show databases; # 查看mysql有多少個數據庫
create database 數據庫名 charset utf8; # 建立數據庫
drop database 數據庫名; # 刪除數據庫
use 數據庫名;# 選擇操做哪一個數據庫
數據表操做相關sql語句
建立數據表(務必要先選擇一個數據庫)
create table 表名(字段名 類型,字段名 類型.....); #建立數據表 添加字段
create table user(id int primary key auto_increment not null,name char(30) not null default "小錯",sex enum("男","女","未知") default "未知",age tinyint(5) not null default 1) charset utf8;
主鍵 primary key auto_increment
實際開發中每一個表基本都會有一個主鍵,其做用是確保每條記錄的惟一性,後面就是經過此主鍵值對錶中的每條記錄進行增刪改查操做。
主鍵的值是自動增加的,設置auto_increment便可,該主鍵字段的值由mysql自動維護。
show tables; #查看數據庫中的數據表
desc 表名; #查看錶結構
drop table 表名; #刪除數據表
數據操做相關sql語句
添加 (insert into)
insert into user set name="小張",sex="女",age="21"; #向表中添加數據
刪除 (delete)
delete from user where id=4; #刪除id=4的數據
更新 (update)
update user set age="24" where id=1; #更新user表中id=1的age字段
查詢(select)
select * from user where id=1; #查詢表中id=1的內容
select * from user where sex="男"; #查詢全部sex="男"的數據
經過php操做mysql
經過php操做mysql的基本步驟:
鏈接mysql ->選擇數據庫->編寫sql語句->執行sql語句獲取結果
* 鏈接數據庫
$link = mysql_connect('ip地址','用戶名','密碼');
* 選擇數據庫
mysql_query('use 數據庫名')
* 執行sql語句
$result = mysql_query('sql語句')
* 獲取select查詢語句的結果
$result = mysql_query('select * from users'); //返回結果集
$rows = [];
echo "<pre />";
while($row = mysql_fetch_assoc($result)){
$rows[] = $row;
}
print_r($rows);
* 獲取增刪改語句的結果
$sql = "insert/update/delete....";
$result = mysql_query( $sql);
$num = mysql_affected_rows() ; //返回受影響行數,大於0說明成功
if($num > 0){
echo '成功';
}else{
echo '失敗';
}
數組轉JSON字符串
$res = mysql_query($sql); // 執行sql語句,返回結果集
$num = mysql_affected_rows(); //返回受影響行數,大於0說明成功
if($num > 0){
$rows = [];
// mysql_fetch_assoc函數每次從結果集中取得一行做爲關聯數組
while($row = mysql_fetch_assoc($res)){
$rows[] = $row;
}
echo json_encode($rows,JSON_UNESCAPED_UNICODE);//數組轉JSON字符串
exit();
}else{
echo '{"err": "true", "msg": "找不到用戶"}';
exit();
}