Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PHP & MySQL 教學

41,187 views

Published on

在屏科大的PHP簡易教學

  • Be the first to comment

PHP & MySQL 教學

  1. 1. PHP & MySQL 教學 Lesson 1 : PHP + MySQL 導論 主講者: appleboy appleboy.tw@gmail.com 2009.10.17
  2. 2. 講師介紹 <ul><li>本名:吳柏毅 (Bo-Yi Wu.) </li></ul><ul><li>My Blog: http://blog.wu-boy.com </li></ul><ul><li>現任: </li></ul><ul><ul><li>CodeIgniter 繁體中文官方網站   [ 開發 & 維護 ] </li></ul></ul><ul><ul><li>PHP- CodeIgniter -Framework-Taiwan   繁體中文翻譯計畫 </li></ul></ul><ul><ul><li>FreeBSD ports committer, maintainer of  several FreeBSD Ports </li></ul></ul>
  3. 3. Outline <ul><li>PHP 簡介 </li></ul><ul><li>PHP 環境建立 </li></ul><ul><li>PHP 基礎介紹 </li></ul><ul><li>MySQL 介紹 </li></ul><ul><li>MySQL 備份、還原 </li></ul><ul><li>MySQL 四大語法 </li></ul>
  4. 4. What is PHP? <ul><li>Server 端所使用的嵌入式語言 </li></ul><ul><li>廣泛使用、多用途的開放源碼腳本語言 </li></ul><ul><li>內嵌於 HTML(HTML-embedded) </li></ul><ul><li>Personal Homepage Program </li></ul>
  5. 5. Who use PHP? <ul><li>國內各大專院校 ( 台、清、交、成… . 中正、中央 ) </li></ul><ul><li>研究機構 ( 中研院、國網中心… ) </li></ul><ul><ul><li>國網中心 </li></ul></ul><ul><ul><ul><li>http:// www.nchc.org.tw / </li></ul></ul></ul><ul><li>營利事業 ( 中華電信、網路家庭… ) </li></ul><ul><ul><li>中華電信 </li></ul></ul><ul><ul><ul><li>http://www.cht.com.tw/index.php </li></ul></ul></ul><ul><ul><li>網路家庭 </li></ul></ul><ul><ul><ul><li>http:// www.pchom.com.tw </li></ul></ul></ul><ul><li>遊戲論壇 ( 巴哈姆特… ) </li></ul><ul><ul><li>http:// www.gamer.com.tw / </li></ul></ul>
  6. 6. WHY use PHP ? <ul><li>最大的優勢 : Free! 免錢 ! </li></ul><ul><li>跨平台 (Linux FreeBSD Windows) </li></ul><ul><li>學習容易,資源很多 ( http://tw.php.net ) </li></ul><ul><li>架設簡單,一分鐘搞定環境? On Windows </li></ul><ul><li>網路資料豐富 ( http://www.google.com ) </li></ul>
  7. 7. PHP vs ASP vs JSP <ul><li>ASP </li></ul><ul><ul><li>微軟平台 ( 雖然有 apache-asp 平台 ) </li></ul></ul><ul><ul><li>效能差 ( 效能輸給 php) </li></ul></ul><ul><ul><li>環境架設困難 debug </li></ul></ul><ul><li>Jsp </li></ul><ul><ul><li>要有 JAVA 基礎 </li></ul></ul><ul><ul><li>環境架設困難 (Path 路徑 ) </li></ul></ul>
  8. 8. 網站運作流程 處理 PHP 轉換 MySQL Server Web Server PHP User request receive
  9. 9. 環境安裝 Apache PHP MySQL <ul><li>快速安裝 (1 分鐘 ) </li></ul><ul><ul><li>Appserv ( http://www.appservnetwork.com/ ) </li></ul></ul><ul><ul><li>AppServ 2.5.10 </li></ul></ul><ul><ul><ul><li>Apache 2.2.8 </li></ul></ul></ul><ul><ul><ul><li>PHP 5.2.6 </li></ul></ul></ul><ul><ul><ul><li>MySQL 5.0.51b </li></ul></ul></ul><ul><ul><ul><li>phpMyAdmin-2.10.3 </li></ul></ul></ul>
  10. 10. Appserv 架構 <ul><li>C:AppServ </li></ul><ul><ul><li>C:AppServApache2.2 (Apache 設定檔 ) </li></ul></ul><ul><ul><li>C:AppServMySQL (MySQL 目錄 ) </li></ul></ul><ul><ul><ul><li>C:AppServMySQLdata (Database 備份資料 ) </li></ul></ul></ul><ul><ul><li>C:AppServphp5 (PHP library 目錄 ) </li></ul></ul><ul><ul><li>C:AppServwww (Web 主要目錄 http://localhost) </li></ul></ul>
  11. 11. Apache <ul><li>DocumentRoot 網站根目錄 </li></ul><ul><li>DirectoryIndex index.php index.htm </li></ul><ul><li>VirtualHost </li></ul><ul><li><VirtualHost *:80> </li></ul><ul><li>ServerAdmin appleboy.tw@gmail.com </li></ul><ul><li>DocumentRoot &quot;/usr/local/www/apache22/data/Blog&quot; </li></ul><ul><li>ServerName blog.wu-boy.com </li></ul><ul><li>ErrorLog &quot;/var/log/blog.wu-boy.com-error_log&quot; </li></ul><ul><li>CustomLog /var/log/blog.wu-boy.com-access_log common </li></ul><ul><li></VirtualHost> </li></ul>
  12. 12. PHP <ul><li>display_errors = On </li></ul><ul><li>error_reporting = E_ALL & ~E_NOTICE </li></ul><ul><li>; default_charset = “iso-8859-1“ ( 註解此行 ) </li></ul><ul><li>register_globals = Off ( 務必關閉 ) </li></ul><ul><ul><li>PHP 6 正式移除 </li></ul></ul><ul><li>magic_quotes_gpc = On </li></ul><ul><ul><li>PHP 6 正式移除 </li></ul></ul>
  13. 13. 選擇編輯器? <ul><li>Pspad ( http://www.pspad.com/ ) Windows </li></ul><ul><li>Notepad++ ( http://tinyurl.com/2kj23k ) Windows </li></ul><ul><li>Ultraedit ( http://www.ultraedit.com/ ) Windows </li></ul><ul><li>Vim ( http://www.vim.org/ ) Linux FreeBSD </li></ul><ul><li>Dreamweaver </li></ul>
  14. 14. 撰寫第一之程式 hello word <ul><li><html> </li></ul><ul><li><head> </li></ul><ul><li><title>First program</title> </li></ul><ul><li></head> </li></ul><ul><li><body> </li></ul><ul><li><? echo &quot;hello, world&quot;;?> </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
  15. 15. 撰寫程式考量 <ul><li>不用的變數盡量不宣告 ( 會警告 ) </li></ul><ul><li>變數名稱命名 ( ex: user_id, user_password) </li></ul><ul><li>考量程式彈性 ( 不寫死,套變數 ) </li></ul><ul><li>縮排、括弧對稱 </li></ul><ul><li>良好的註解程式 </li></ul>
  16. 16. PHP 註解 <ul><li>可以使用 C, C++, Shell script 形式的註解 </li></ul><ul><li>EX1: </li></ul><ul><li>/* 這是註解 </li></ul><ul><li>註解第二行 */ </li></ul><ul><li>EX2: </li></ul><ul><li>echo “test”; // 這是註解 </li></ul><ul><li>EX3: </li></ul><ul><li>echo “test”; # 這是註解 </li></ul>
  17. 17. Use echo <ul><li>What is different “ and ‘ ? </li></ul><ul><li>$foo = &quot;foobar&quot;; </li></ul><ul><li>echo 'foo is $foo'; // foo is $foo </li></ul><ul><li>echo ”$foo”;         // foobar </li></ul><ul><li>What is different between “ and ‘ ? </li></ul>
  18. 18. 變數與常數 <ul><li>PHP 的變數型別 </li></ul><ul><ul><li>integer( 整數 ) </li></ul></ul><ul><ul><li>double( 浮點數 ) </li></ul></ul><ul><ul><li>string( 字串 ) </li></ul></ul><ul><ul><li>array( 陣列 ) </li></ul></ul><ul><ul><li>Boolean </li></ul></ul><ul><ul><li>object( 物件 ) </li></ul></ul><ul><ul><li>resource( 資源 ) </li></ul></ul><ul><ul><li>NULL </li></ul></ul>
  19. 19. 變數指派 <ul><li>使用變數前不需要宣告,指派值的時候 </li></ul><ul><li>變數自然產生 </li></ul><ul><ul><li>變數名稱大小寫有差異 </li></ul></ul><ul><ul><li>變數名稱前需加上” $” </li></ul></ul><ul><li>型別轉換 </li></ul><ul><ul><li>在變數前加上 () , () 內打上想要轉換的型別 </li></ul></ul><ul><ul><li>只是暫時轉換型別,原變數不會改變型別 </li></ul></ul>
  20. 20. 變數 <ul><li>變數的變數: </li></ul><ul><ul><li>$$var </li></ul></ul><ul><li>常數 </li></ul><ul><ul><li>利用 define </li></ul></ul><ul><ul><li>用在固定不會更動的數值( ex: 資料表名稱) </li></ul></ul>
  21. 21. PHP 常用全域變數 <ul><li>$_POST </li></ul><ul><ul><li>儲存經由表單 POST 的表單資訊 </li></ul></ul><ul><li>$_GET </li></ul><ul><ul><li>儲存經由 GET 所得到的資訊 </li></ul></ul><ul><li>$_SERVER </li></ul><ul><ul><li>儲存 Server 端的環境變數 </li></ul></ul>
  22. 22. PHP 常用全域變數 ( 續 ) <ul><li>$_FILES </li></ul><ul><ul><li>上傳的檔案資訊 </li></ul></ul><ul><li>$_SESSION </li></ul><ul><li>$_COOKIE </li></ul>
  23. 23. PHP 變數常用函式 <ul><li>isset ( 判斷是變數是否存在,或者為非 null) </li></ul><ul><li>unset ( 取消變數 ) </li></ul><ul><li>empty ( 判斷是否為空值 ) </li></ul>
  24. 24. PHP 算術運算 遞減 -- 累加 ++ 取餘數 % 除法運算 / 乘法運算 * 減法運算 - 加法運算 + 意義 符號
  25. 25. 字串運算 <ul><li>利用 . </li></ul><ul><ul><li>echo $a . $b </li></ul></ul><ul><ul><li>echo “ 我是” . “ 小惡魔” </li></ul></ul><ul><ul><li>$a .= $b; </li></ul></ul><ul><ul><ul><li>$a = $a . $b </li></ul></ul></ul>
  26. 26. 設定運算 將右邊的字串加到左邊 .= 將左邊的值對右邊取餘數 %= 將左邊的值除以右邊 /= 將左邊的值乘以右邊 *= 將右邊的值減到左邊 -= 將右邊的值加到左邊 += 將右邊的值連到左邊 ( 一定要會 ) = 意義 符號
  27. 27. 邏輯運算 不 (Not) ! 互斥 (Xor) xor 或者 (Or) || or 而且 (And) && and 不等於 != 等於 == 大於或等於 >= 小於或等於 <= 大於 > 小於 < 意義 符號
  28. 28. 其它運算符號 三元運算子 ex: echo ($a > $b) ? $a : $b ? : 陣列的元素值 $a = array(“1” => “ 我” ) => 物件的方法或者屬性 $a->setType($b) -> 不顯示錯誤訊息 ( 加在函數前 ) @mysql_query($sql); @ 變數的指標 ( 加在變數前 ) $a = & $b & 變數 $ 意義 符號
  29. 29. 流程控制 if <ul><li>單行 if </li></ul><ul><li>多行 else if </li></ul><ul><li>省略法 ( 初學者不建議 ) </li></ul><ul><li>MVC 寫法: </li></ul><ul><ul><li>If($a == $b): </li></ul></ul><ul><ul><li>elseif: </li></ul></ul><ul><ul><li>endif; </li></ul></ul>
  30. 30. while <ul><li>用於取出 mysql data source 使用 </li></ul>
  31. 31. switch <ul><li>Switch($mode) </li></ul><ul><li>{ </li></ul><ul><ul><li>Case “add”: </li></ul></ul><ul><ul><li>Break; </li></ul></ul><ul><ul><li>Case “edit”: </li></ul></ul><ul><ul><li>Break; </li></ul></ul><ul><ul><li>Case “delete”: </li></ul></ul><ul><ul><li>Break; </li></ul></ul><ul><li>} </li></ul>
  32. 32. for <ul><li>用於處理陣列,或者是連續資料 </li></ul>
  33. 33. foreach <ul><li>foreach ( array as $value) </li></ul><ul><ul><li>statement; </li></ul></ul><ul><li>foreach ( array as $key => $value) </li></ul><ul><ul><li>statement; </li></ul></ul><ul><li>例子: </li></ul><ul><ul><li>foreach ($_POST as $key => $value) </li></ul></ul><ul><ul><ul><li>statement; </li></ul></ul></ul>
  34. 34. require() VS include() <ul><li>require(): 出現錯誤就中斷程式 </li></ul><ul><li>include(): 出現錯誤能繼續執行 </li></ul><ul><li>使用時機? </li></ul>
  35. 35. switch 迴圈 <ul><li>使用時機 </li></ul>
  36. 36. Function 函式 <ul><li>function myfunc($a, $b) </li></ul><ul><li>{ </li></ul><ul><ul><li>// 執行一些動作 </li></ul></ul><ul><ul><li>return $c; </li></ul></ul><ul><li>} </li></ul>
  37. 37. Objects 物件 <ul><li><?php class foo {     function do_foo()     {         echo &quot;Doing foo.&quot;;      } } $bar = new foo; $bar->do_foo(); ?> </li></ul>
  38. 38. 網址傳值原理 POST & GET <ul><li>global register? PHP6 remove it. </li></ul><ul><li>$HTTP_GET_VARS = $_GET </li></ul><ul><li>$HTTP_POST_VARS = $_POST </li></ul><ul><li>表單設定 </li></ul><ul><ul><li><form method=&quot;get&quot;> </li></ul></ul><ul><ul><li><form method=“post&quot;> </li></ul></ul><ul><li>test.php ? forum_id = 5 & sort =add_time </li></ul><ul><ul><li>?  掛入變數串 </li></ul></ul><ul><ul><li>forum_id 、 sort  變數 </li></ul></ul><ul><ul><li>5 、 add_time  變數的值 </li></ul></ul><ul><ul><li>&  串起變數 </li></ul></ul>
  39. 39. exercise <ul><li>N N 乘法表 </li></ul><ul><li>http://127.0.0.1/example.php?a=9 </li></ul><ul><li>以上為 99 乘法表 </li></ul><ul><li>http://127.0.0.1/example.php?a =6 </li></ul><ul><li>以上為 66 乘法表 </li></ul>
  40. 40. PHP + MYSQL <ul><li>My first job? </li></ul><ul><li>Why use MySQL Database? </li></ul>
  41. 41. MySQL DataBase <ul><li>MySQL 的開發理念: </li></ul><ul><ul><li>MySQL is a relational database management system. </li></ul></ul><ul><ul><li>MySQL software is Open Source </li></ul></ul><ul><ul><li>The MySQL Database Server is very fast, reliable, and easy to use. </li></ul></ul><ul><li>Select </li></ul><ul><li>Insert </li></ul><ul><li>Update </li></ul><ul><li>Delete </li></ul>
  42. 42. phpMyAdmin Web <ul><li>http://www.phpmyadmin.net </li></ul><ul><li>MySQL 權限與連線設定 </li></ul><ul><li>預設使用者: root 密碼:空 </li></ul><ul><li>權限控管: localhost or % </li></ul>
  43. 43. Navicat for MySQL GUI <ul><li>http:// www.navicat.com/cht </li></ul>非商業版 ( 免費 ) - Lite 版本
  44. 44. SQL <ul><li>MySQL </li></ul><ul><li>Postgresql </li></ul><ul><li>Oracle </li></ul><ul><li>MS SQL </li></ul><ul><li>Sybase </li></ul>
  45. 45. Select ( 查詢 ) <ul><li>Select * from xxx_table </li></ul><ul><ul><li>bad </li></ul></ul><ul><li>Select user_name, user_password from … </li></ul><ul><ul><li>good </li></ul></ul><ul><li>SELECT * FROM table WHERE id = ‘aaa’ and passwd = ‘bbb’ </li></ul><ul><li>Left join, right join, GROUP, order by </li></ul><ul><li>Sub query </li></ul>
  46. 46. Insert into <ul><li>INSERT INTO 資料表 </li></ul><ul><ul><li>( 欄位 1, 欄位 2, 欄位 3) </li></ul></ul><ul><ul><li>VALUES </li></ul></ul><ul><ul><li>(‘1’, ‘2’, ‘3’) </li></ul></ul><ul><li>欄位全部用上,可省略欄位名稱 </li></ul><ul><li>流水號欄位,不用寫入 </li></ul>
  47. 47. Delete 刪除 <ul><li>Delete from table where id = ‘’ </li></ul><ul><li>Delete from table where id in (‘1’, ‘2’) </li></ul><ul><ul><li>Implode </li></ul></ul><ul><ul><ul><li>$del_id = implode(&quot;,&quot;, $array); </li></ul></ul></ul>
  48. 48. Update <ul><li>UPDATE table SET </li></ul><ul><ul><li>欄位 1 = ‘ 資料’ , </li></ul></ul><ul><ul><li>欄位 2 = ‘ 資料’ , </li></ul></ul><ul><ul><li>WHERE 欄位 = ‘ 資料’ </li></ul></ul>
  49. 49. Create 資料表 <ul><li>Use phpMyAdmin </li></ul><ul><li>CREATE TABLE `degree_map` ( </li></ul><ul><ul><li>`code` char(1) NOT NULL default '', </li></ul></ul><ul><ul><li>`title` tinytext NOT NULL, </li></ul></ul><ul><ul><li>PRIMARY KEY (`code`) ) </li></ul></ul><ul><ul><li>ENGINE=MyISAM DEFAULT CHARSET=utf8; </li></ul></ul>
  50. 50. Drop table 刪除資料表 <ul><li>DROP TABLE tbl_name </li></ul><ul><ul><li>tbl_name 資料表 </li></ul></ul><ul><li>DROP DATABASE db_name </li></ul>
  51. 51. MySQL 備份、恢復 <ul><li>Use mysqldum command to backup your database </li></ul><ul><li>User mysql command to restore your database </li></ul><ul><ul><li>Mysqldump –u root –p database_name > db.sql </li></ul></ul><ul><ul><li>Mysql –u root –p database_name < db.sql </li></ul></ul><ul><ul><li>--default-character-set=latin1, utf8 </li></ul></ul>
  52. 52. exercise <ul><li>Use phpMyAdmin Create one database </li></ul><ul><li>Create table project_news </li></ul><ul><ul><li>news_id </li></ul></ul><ul><ul><li>news_title </li></ul></ul><ul><ul><li>news_desc </li></ul></ul><ul><ul><li>add_time </li></ul></ul><ul><ul><li>edit_time </li></ul></ul>
  53. 53. html <ul><li>CSS, javascript, html </li></ul><ul><li>Form 表單 </li></ul>
  54. 54. Exercise & Homework <ul><li>留言板系統 </li></ul><ul><ul><li>show.php 取出資料 </li></ul></ul><ul><ul><li>add.php 新增資料 </li></ul></ul><ul><ul><li>other.php 修改刪除資料 </li></ul></ul><ul><li>Database 規劃 </li></ul>

×