第一篇:黑馬程序員_PHP_課程同步筆記day21:表定義語句
【黑馬程序員】PHP課程同步筆記day21:表定義語句
表定義語句 創建表: 基本形式:
Create table [if not exists] 表名(列定義列表,[索引或約束列表])[表選項列表];說明:
1.上述列表都是指”多項并列項”,每一項之間用(,)分開 2.其中中括號部分是可以省略的 列定義:
每一個列定義的基本形式:
列名
列類型
[列屬性列表] 說明:
1.列類型,就是數據類型,其中還可能會需要跟類型有關的相應設定。2.列屬性有6個,相互之間用空格隔開就可以:
a)Auto_increment:表示自增長,用于整數類型。一旦設定了此屬性,則也同時要求設定一個”key”屬性,就是后面那2個:primary key或unique key b)Primary key:表示主鍵,用于唯一確定一行的數據
c)Unique key :表示唯一鍵,用于設定某個字段的值在所有行中是唯一的(不可重復的)d)Not null :表示不能為空(非空屬性)e)Default XX值:設定默認值,當該字段沒有賦值或賦值為NULL時,自動獲得該值
黑馬程序員濟南中心 編著
f)Comment ‘字段說明文字’:表示一種可以解釋該字段含義,但又不屬于”注釋”的內容。
索引:
索引是一種數據庫內部為了加快數據查找(搜索)速度的內部機制,其設定某個字段”有索引”,則該字段作為條件(比如where age=22)進行查找就會極大提高其速度。
索引設定形式:
通用形式:索引類別(字段名1,[字段名2],[字段名3]....);//至少一個字段 索引類別有:
普通索引:key [索引名](字段列表)
就只有索引的作用
唯一索引:unique key [索引名](字段列表)具有索引作用,而且具有唯一性 主鍵索引:primary key(字段列表)
具有索引作用,而且具有主鍵特性 外鍵索引:foreign key[索引名](字段列表)reference 其他表(對應字段列表)具有索引作用,而且具有對應其他表的字段值的作用(外鍵作用)全文索引:fulltext key [索引名](字段列表)具有索引作用,但mysql對中文無法正常發揮作用 索引的弊端:
降低(減慢)增刪改數據的效率(速度)約束:
約束是指數據庫中預先設定的對數據的”規定”,”要求”,”條件”等等
約束,是指在”建表”的時候,預先設定好的,以期對”后續寫入數據”進行”檢查”來決定是否滿足設定的約束條件,結果有兩種可能:滿足寫入成功,不滿足寫入失敗。
有以下幾種約束:
黑馬程序員濟南中心 編著
唯一約束
: unique key(字段列表)主鍵約束
:primary key(字段列表)外鍵約束
:foreign key(字段列表)references 其他表(對應字段列表)非空約束
:not null 默認約束
:default XX值 檢查約束
:check(某字段的條件)說明: 1.前3個約束,其實同時也是索引,無需額外設定 2.非空約束和默認約束是”字段屬性”,無需額外設定 3.檢查約束mysql不支持該功能。。
表選項:
表選項是對一個表的額外屬性的設定,多個設定之間用逗號(,)隔開 如下幾個選項可設定:
Auto_increment = 自增長數字的起始值 Charset = 字符編碼名 定
Collate = 排序規則名
//可以不設定,使用數據庫級別的設定
//可以不設定,默認為1
//可以不設定,就是使用數據庫級別的設Comment = ‘表說明文字’ Engine = 存儲引擎名 存儲引擎
存儲引擎其實就是將”成千上萬”的數據,存入到硬盤(文件)的內部機制(方式).不同的存儲引擎在性能(速度),功能,資源消耗方面有所不同。
//可以不設定,默認是”InnoDB”
黑馬程序員濟南中心 編著
一個重要的觀念:沒有一個性能最好,功能最全,資源消耗最小的存儲引擎。主要存儲引擎如下:
修改表: 總體思想:
1.修改表是一個表建立之后的補救工作,不應該當做一個”常規工作”.2.建表能完成的事情,修改表幾乎都能完成 3.語法:
Alter table 表名 修改項1,修改項2.....;其中,修改項可以包括:
字段:可以增刪改 索引(約束):可以增刪; 表選項:只能修改(從新設定)
黑馬程序員濟南中心 編著
刪除表:
drop table 【if exists】 表名;
其他相關語句:
? ? ? ? ? 顯示所有表: show tables;
顯示某表的結構: desc 表名; 或:describe 表名; 顯示某表的創建語句:show create table 表名; 重命名表:rename table 舊表名 to 新表名; 刪除索引:drop index 索引名 on 表名。
黑馬程序員濟南中心 編著
第二篇:黑馬程序員_PHP_課程同步筆記day18:PHP函數
【黑馬程序員】PHP課程同步筆記day18:PHP函數
PHP函數 1.概念
將一段常用的功能代碼,進行封裝,然后起個名字,叫”函數” 使用函數,可以減少我們的工作量。對于后期的項目維護,十分方便。2.函數定義格式
Function functionName(形參1,形參2,形參3......){
函數的功能代碼
[return 參數r] } 函數語法格式說明:
Function是系統關鍵字,不分大小寫。
functionName是自定義的函數名稱。函數名的命名規則與變量一樣,只是不加$符號。
()定義函數時的參數,該參數又稱為”形參”。
形式參數:主要用來接收調用函數者,傳遞過來的數據。
形參可以是多個,多個形參之間用逗號隔開,也可以沒有形參
形參其實就是一個變量的名稱,主要用來臨時存儲數據的。{}是函數的功能代碼。Return語句:
向誰返回內容?誰調用了該函數,就向誰返回。
返回什么內容?該內容的類型不限制,可以是任何數據類型
黑馬程序員濟南中心 編著
Return語句,一旦執行,函數將中止。也就是return語句之后的函數代碼不再執行。
Return 語句返回一個值,并退出函數。
3.函數調用
函數定義是不會自動執行的。函數必須要經過調用,才能看到結果 調用函數和定義函數不分順序。4.函數參數
a)形式參數(形參):形參主要用來接收調用函數傳遞過來的數據。
i.形參一般是變量,不能是具體的值
ii.形參只能在函數內部使用
b)實際參數(實參):向定義函數傳遞的數據
i.實參可以是具體值,也可以是一個變量
c)形參和實參的個數,一般情況下必須一致 Function showInfo($a){ Echo “OK”;} $a = 100;showInfo($a);函數參數傳遞 1.值傳遞(拷貝傳值)將一個變量的值,”拷貝”一份,傳給形參
黑馬程序員濟南中心 編著
在函數內部,對形參進行了修改,而函數外的這個變量不會改變 函數內的形參,與函數外的實參,是相互獨立的,沒有任何聯系的
在PHP中,默認”值傳遞”的有:字符型、整型、浮點型、布爾型、數組、NULL
2.引用傳遞
將一個變量的地址傳給形參,即形參與變量指向的是”同一物”.變量和參數之間是相互聯系,修改一個,另一個會跟著變。
參數在使用引用傳遞時,需要在”形參”前加一個”&”符號。”實參”前不能添加。
默認引用傳地址:資源和對象
黑馬程序員濟南中心 編著
3.默認參數
PHP支持默認參數。
當實參格式少于形參個數時,那么少的那個實參可以用末日的形參來代替
匿名函數
1.概念
沒有名字的函數就是匿名函數,它不能單獨定義也不能單獨調用 匿名函數一般用來給其他變量賦值的。
黑馬程序員濟南中心 編著
2.匿名函數的兩種用法
i.將匿名函數當成一個數據,賦給其他變量
ii.將匿名函數作為函數的參數來使用
變量作用域
變量作用域:就是變量生效的范圍
在PHP中三種變量作用域:全局變量、局部變量、超全局變量。1.全局變量
全局變量:在函數外部定義的變量,稱為”全局變量”。
黑馬程序員濟南中心 編著
全局變量,在網頁執行完畢,就消失了。在JS中,全局變量,可以直接在函數內部來使用 在PHP中,全局變量不能直接在函數內部使用 2.局部變量
局部變量:在函數內部定義的變量,稱為”局部變量”。局部變量,只能在函數內部來使用 局部變量,在函數執行完畢后就消失了。3.在局部作用域中訪問全局變量---global關鍵字
Global關鍵字,只能在函數內部來使用
不能在使用global關鍵字時,直接給變量賦值。只能是先聲明為全局,再賦值。
$GLOBALS超全局數組
“超全局數組變量”可以在網頁的任何地方使用,包括函數內部和函數外部。$GLOBALS超全局數組中包含的內容有:$_GET、$_POST、$_COOKIE、$_FILES
黑馬程序員濟南中心 編著
第三篇:黑馬程序員_PHP_課程同步筆記day17:數組介紹
【黑馬程序員】PHP課程同步筆記day17:數組介紹
數組 1.數組的概念
數組是一組值的集合,變量是單個值的容器,而數組是多個值的容器 2.數組的分類
1.枚舉數組:數組的下標是從0開始的正整數
2.關聯數組:數組的下標可以是字符串
$arr = array(“db_host” => “localhost”, “db_user” => “root”, “db_pwd” =>”root”,);
3.混合數組:下標既有整型的,也有字符串的
$arr = array(“db_host” => “localhost”, “db_user” => “root”, “db_pwd” =>”root”, “黑馬程序員”, “濟南分校”);
4.多維數組:數組的元素的值的類型是一個數組。數組套數組。數組元素的下標只能是正整數和字符串。數組元素的值,可以是任何類型,當然可以是數組。
黑馬程序員濟南中心 編著
$arr = array(Array(10,11,12,13), Array(20,21,22), Array(30,31), TRUE,NULL);3.數組的創建
a)使用array()來創建數組 $arr = array([$key=>]$value, [$key=>]$value, [$key=>]$value,.....);語法說明:
$key代表數組元素的下標,可以省略。
$key的類型可以是整型和字符型,如果$key省略,默認的數組應該是枚舉數組。$value代表數組元素的值,值可以是任何類型。“=>”重載下標,或者重新指定下標。多個數組元素之間用英文下的逗號隔開。b)使用[]創建數組的語法
語法1:$arr[] = $value
黑馬程序員濟南中心 編著
說明: 1)如果數組不存在,則會創建一個數組 2)第一個元素就是下標為0的元素 3)如果數組存在,則相當于添加一個新元素 4)新元素的下標,應該是最大整數下標+1 語法2: $arr[$key] = $value 說明:
1)同時指定下標,指定的下標是多少,就是多少。2)如果指定的數組不存在,也會創建一個數組 3)如果指定的數組存在,則添加一個新元素 $arr[] = 100;$arr[] = 200;$arr[5] = 500;$arr[“a”] = “abc”;多維數組
1、使用array()來創建多維數組
$arr = array(Array(10,11,12,13,14), Array(20,21,22,23), Array(30,31,32), Array(Array(40,41),黑馬程序員濟南中心 編著
Array(42,43)));
2、使用[]來創建多維數組
$arr[“name”] = “Mary”;$arr[“sex”] = “男”;$arr[“contact”][“tel”] = “11111111111”;$arr[“contact”][“qq”] = “11233321”;$arr[] = array(10,20,30);實例:用表格輸出二維數組 $arr = array(Array(“10010”,”Mary”,”大專”,”傳智專修學院”), Array(“10020”,”Kate”,”大專”,”傳智專修學院”), Array(“10030”,”James”,”大專”,”傳智專修學院”), Array(“10040”,”Kobe”,”大專”,”傳智專修學院”),);$str = “”;$str.= “
b)語法:print_r(mixed $expression)c)說明:如果給出的是string、interger或float,將打印變量值本身。如果給出的是array,將會按照一定格式顯示鍵和元素
2.Count()a)描述:統計數組有效數據的個數
b)說明:計算數組中的單元數目或對象中的屬性個數。c)語法:int count(mixed $var)d)參數:$mode是否統計多維數組中的個數 3.Unset()a)描述:刪除變量或數組元素或者對象屬性 b)語法:void unset(mixed $var)c)返回值:無
d)注意:如果刪除變量的話,只是刪除變量名稱和到值之間的指向。如果刪除數組元素的話,值會被刪除,而下標還在。如果刪除整個數組的話,而整個數組都不存在黑馬程序員濟南中心 編著
了。
實例:求一維數組中元素的平均值 $arr = array(1,2,3,4,5,6,7,8);$num = 0;$len = count($arr);For($i=0;$i<$len;++$i){ $sum += $arr[$i];} Echo “平均值為:”.$sum/$len;實例:求二維數組中元素的平均值 $arr = array(Array(10,11,12,13,14), Array(20,21,22,23), Array(30,31,32), Array(40,41), Array(50));$sum = 0;$len = 0;For($i = 0;$i 黑馬程序員濟南中心 編著 $len ++;} } Echo “平均值:”.round($sum/$len,2);實例:求一維數組中的最大值 $arr = array(9,2,3,45,5,7);$max = $arr[0];For($i=0;$i If($max<$arr[$i]){ 黑馬程序員濟南中心 編著 $max = $arr[$i];$max_index = $i;} //最小值 If($min>$arr[$i]){ $min = $arr[$i];$min_index = $i;} } //交換最大值和最小值的位置 $arr[$max_index] = $min;$arr[$min_index] = $max;數組遍歷:foreach 語法結構: Foreach($arr as [$key=>]$value){循環體代碼} 語法結構說明: $arr代表當前要遍歷的數組名稱 As是系統關鍵字 $key表示每一次取到元素的鍵名,可以省略 $value表示每一次取到元素的鍵值 如果數組指針指到數組的末端,則退出循環 實例:foreach遍歷一維數組 黑馬程序員濟南中心 編著 $arr = array(“name” => “Mary”, “sex” => “男”, “age” => 24);Foreach($arr as $key=>$value){ Echo “$arr[$key]=$value 黑馬程序員濟南中心 編著 } $str.=” 2.List()a)描述:把數組中的值(前幾個值)賦給一些變量 b)語法:array list(mixed $varname)c)舉例:list($name,$sex,$age)= array(“Kobe”,”男”,24,”高中”);i.說明:將數組中前三個元素的值,賦給list函數中的三個變量。 ii.數組中多余的值不需要 黑馬程序員濟南中心 編著 iii.要求數組必須是枚舉數組,下標必須是從0開始的正整數 iv.下標必須是連續的,中間不能斷檔。 黑馬程序員濟南中心 編著 PDO介紹 pdo是什么? PDO: PHP 的 Data Object(php的數據對象)pdo到底是什么? 它相當于“別人”寫的mysqldb工具類!比如: $pdo = new pdo(); //這就是$pdo的一個對象!但pdo比我們自己寫的mysqldb工具類復雜多了,功能也強多了。其原理如下: 其中,pdo的各種數據庫“引擎”,我們可以在php.ini中進行“開關”控制: 如下: 黑馬程序員濟南中心 編著 重啟apache。 使用pdo連接mysql數據庫 DSN = “mysql:host=服務器地址/名稱;port=端口號;dbname=數據庫名”;Options = array(PDO::MYSQL_ATTR_INIT_COMMAND=>’set names utf8’);$pdo = new pdo(DSN, “用戶名”, “密碼”, Options); [PHP] 純文本查看 復制代碼 ? 01 04 //DSN = “mysql:host = 服務器地址/名05 稱;port=端口號;dbname=數據庫名”;06 //DSN是一種常見的“縮略語”,表示:Data 黑馬程序員濟南中心 編著 07 Source Name(數據源名稱)08 //Options = 09 array(PDO::MYSQL_ATTR_INIT_COMMAN10 D=>'set names utf8');11 //其中PDO就是類,12 MYSQL_ATTR_INIT_COMMAND是該類中的13 一個常量 $dsn = “mysql:host=localhost;port=3306;dbname=php43;”;$opt = array(PDO::MYSQL_ATTR_INIT_COMMAND=>“set names utf8”);$pdo = new pdo($dsn,“root”,“root”,$opt); var_dump($pdo);[align=left] 結果如下: object(PDO)#1(0){} 使用pdo執行sql語句: 黑馬程序員濟南中心 編著 有2個方法,如下: $result = $pdo-> query($sql);//可以執行任何sql語句,通常適用于執行select這種 如果執行select這種有數據返回的語句,則所得到的結果是“pdo結果集” $result = $pdo-> exec($sql); //只能執行沒有返回數據的sql語句,比如增刪改語句; 執行的結果返回true或false 銷毀pdo數據對象(釋放資源): pdo技術范圍中,會有兩種對象數據結果: pdo對象 pdo結果集對象 $pdo = null;$result->closecursor(); //$result 就是pdo數據集(pdo結果集) pdo對象的其他方法 $pdo->lastInsertId():獲取最后一次插入時的自增長的id值 $pdo->beginTransaction();$pdo->commit()$pdo->rollBack();$pdo->setAttribute(屬性名,屬性值); 黑馬程序員濟南中心 編著 最后一個舉例: $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 黑馬程序員濟南中心 編著 【黑馬程序員濟南】PHP模塊講解之驗證碼部分 在日益龐大的網民的面前,如何能夠合理的規避以防止服務器被惡意DoS攻擊或者不法之徒利用機器程序自動貼牛皮癬廣告?一條小小的驗證碼功能就可以阻擋大部分的問題,所以今天我們就來研究一下如何生成驗證碼。 要求: 碼值:有4位,大寫字母和數字組成 驗證碼圖像:存在背景,在有限的圖像中選擇作為背景。文字居中顯示,文字顏色有白色黑色 碼值 [PHP] 純文本查看 復制代碼 ? 01 05 * 有4位,大寫字母和數字組成 06 * 隨機生成 07 */ 08 黑馬程序員濟南中心 編著 09 //列出所有的大寫字母和數字作為一個集合 $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789';11 $chars_len = strlen($chars);//獲取集合長度 12 //規定驗證碼值的長度 14 $code_len = 4;15 //初始化驗證碼值 16 $code = '';17 //隨機選取4位字符 for($i = 0;$i<$code_len;$i++){ 19 //隨機獲取一個字符下標 $rand_index = mt_rand(0,$chars_len-1);21 //將獲取到的下標從字符的集合中取出并追加到$code中 22 $code.= $chars[$rand_index];23 } 24 //$code就是我想獲取到的4位的隨機數 25 echo $code;存生成好的驗證碼我們是需要將其保存起來,用來驗證用戶輸入的驗證信息是否正確 而驗證碼只需要存在一個會話周期就可以了,所以就不需要存儲到數據庫中,我們將其存儲于session中。 [PHP] 純文本查看 復制代碼 ? 黑馬程序員濟南中心 編著 2 3 //開啟session session_start();$_SESSION['code'] = $code;驗證碼圖像 簡單字符串(字母數字)寫在畫布上的函數: imageString(畫布,字體,位置x,位置y,字符串內容,顏色);字體:imagestring函數,使用的內置字體。由1-5表示。位置:由字符串左上角的坐標來確定 顏色:也是需要預先分配好的。imagecolorallocate()[PHP] 純文本查看 復制代碼 ? 01 04 * $image代表要將生成好的驗證碼寫入到的畫布 05 * $font 使用內置的字體,有1,2,3,4,5這5種型號 06 * $x,$y代表驗證碼在畫布中的坐標位置 07 * $s 代表生成好的字符串 08 * $col 代表字體所用的顏色 09 */ 黑馬程序員濟南中心 編著 //取一張圖片作為背景 11 $bg_file = '/1.jpg';12 //根據該圖片,創建畫布 $image = imagecreatefromjpeg($bg_file);14 //分配字體顏色,隨機分配,黑色或者白色 15 if(mt_rand(0,1)==1){ 16 //如果是1就是設置字體顏色為黑色 $str_color = imagecolorallocate($image,0,0,0);18 }else{ 19 //如果不是1就設置字體顏色為白色 $str_color = imagecolorallocate($image,255,0xff,255);21 } 22 //內置5號字體 24 $font = 5;25 //位置 26 $str_x = 50;27 $str_y = 5;28 //生成帶驗證碼的圖片 imagestring($image,$font,$str_x,$str_y,$code,$str_color); 黑馬程序員濟南中心 編著 一定要輸出圖片和銷毀畫布: [PHP] 純文本查看 復制代碼 ? 這樣我們就生成了一個驗證碼圖片,不知道大家對今天的知識了解程度如何啊? 黑馬程序員濟南中心 編著
”;} 實例:foreach遍歷二維數組 $arr = array(“a” =>array(“10010”,”Mary”,”男”,24), “b”=>array(“10020”,”Kate”,”女”,20), “c” => array(“10030”,”Kobe”,”男”,40));$str = “”;$str.=””;Foreach($arr as $arr2){ $str.=”
”;Echo $str;實例:foreach 中的$value引用傳地址 $arr = array(1,2,3,4,5,6,7,8);Foreach($arr as &$value){ $value *=2;} Var_dump($arr);數組操作函數 1.each()a)描述:返回數組中當前的鍵/值對(數組元素)并將數組指針向前移動一步 b)語法:array each(array &$array)c)返回值:返回array數組中當前指針位置的鍵/值對并向前移動數組指針。鍵值對被返回四個單元的數組。單元0和key包含有數組單元的鍵名,1和value包含有數據。”;Foreach($arr2 as $value){ $str.=” ”;$value ”;} $str.=”第四篇:黑馬程序員_PHP_課程同步筆記day35:PDO介紹
第五篇:黑馬程序員_PHP_課程同步筆記day41:驗證碼模塊講解