初學入門 PHP 和 MySQL
3 D+ J5 W8 l! a1 r/ w! ]- M' I8 n# t) U: P9 ]* X
初學入門 PHP 和 MySQL& W% Z6 ~, z1 V2 t" ]5 K
5 ?* |) @; i/ }
初學入門 PHP 和 MySQL7 G) r( I9 [6 S: R* C4 a8 h+ G/ E
9 I* x3 ]% y+ g8 X, B
我想要使用PHP和MySQL,但是如何安裝和運行呢?什麼是最基本的事情我應該知道的,以便讓一個簡單
) K( I- O7 A- H6 P4 g的PHP - MySQL應用程序工作?
0 x3 D4 w0 T4 C6 Z5 M" x 這是一個基本的教程。沒有怪異的代碼,只是一些基礎。 - a/ v# a- q7 t7 M
1 Y3 A" K' ]. l; P& y; N 多說一句,現在有大量的教程是基於UNIX機器的,這個教程將集中在基於Windows平台上。然而,除了
$ P3 \7 } n. b; x安裝部分,有或多或少的針對於Windows的說明外,其它部分對所有的平台都是一樣的。
" V' W$ D) ` N' U8 ?; I# W6 c" ]9 b! A
在這個教程中,我們將一步一步地建立一個小的網站,使用了PHP和MySQL的下面特性: ' j, F D/ F7 Y& G
& _5 ]) l, d. J0 X% h 1. 查看數據庫; / [8 }6 g( Z- c5 y+ t8 _
2. 編輯數據庫的記錄; ) z. D: w+ r. H
3. 修改數據庫的記錄; & L0 y& @/ f/ Q- K& |; D0 O1 @
4. 刪除數據庫的記錄。
0 S: T# Q9 j/ d! @* m' s" f2 V) P) H5 V# j$ f
我們將同時學習MySQL和PHP,一起去感覺它們。 9 J. m. k. g5 |0 c, Q3 y
3 L0 N+ p0 C( a/ S7 L, @0 r8 H5 n
第一節 - 收集和建立必要的項目 2 n6 e3 F4 z/ P% r
, S& \; O! X+ ~* Q
好,開始工作。為了開始PHP-MySQL我們需要一些準備: 1 t" y( y: W2 t/ H+ W
4 q' [/ T9 C! I- K: `) d1 g0 c M* U 1. 運行web服務器; 0 Y0 `+ R D3 h a. ]8 h6 T
2. 增加PHP擴展; , F+ _' K% T( C; K" x. l
3. 運行MySQL。
/ N% e2 v8 Z$ g ~( E6 p. Q
$ t9 p/ o% a3 K 第一步,得到和安裝Web服務器 $ I" i" |& \. G3 G9 _
1 g( v; E8 R. V7 ? 讓我們假設一下在你的機器上已經有一個運行著的web服務器。在Windows下有幾個好用的web服務器應
, {3 V5 L2 m: m1 w- m- V0 L! v用程序。要注意一件事,為了運行php/mysql你所選的web服務器應當可以支持擴展。 5 S* t, w: C) t- e* h+ ?8 r
" H: U' ~2 {9 h0 W" r 一個在Windows上最容易安裝的服務器是OmniHTTPd(http://www.omnicron.ab.ca/httpd/,它是一個非
, F. E x* ^7 W常好的自由web服務器。
, J% o9 o6 `# I5 C) V
. Z( a' {' c; A 一旦你從站點上得到了安裝文件,雙擊它並且安裝web服務器。如果你在安裝時全部選擇了使用缺省值,
* H9 V" p3 w, d那麼你將會把它安裝在c:\httpd下。一旦安裝成功,安裝程序將啟動web服務器,帶有一個歡迎窗口,在
& ~6 b* u! u& A: w0 _windows的系統托盤中可以看到一個新的圖標。
+ K5 Z2 M \! H% `
3 b* k m7 [9 ]* O, q 好了,第一步做完了。
! U6 q/ {8 z# _) C1 G9 _ {. z+ F& p6 ~
第二步,下載和安裝PHP發行版 : B( @" b3 ~, F m
6 M2 t, m! G j5 h, e# c# p! N 得到PHP Win32發行版很容易:只要去http://www.php.net/download-php.php3,並且選擇一個最好的
% |% V1 o6 t3 {' u. {) a位置就可以了。 . q( q' e4 i* ~ P1 z6 f- N
' p. m& Z/ k- r6 f 在OmniHTTPd上安裝PHP非常簡單。
+ h: ]. `" m% z+ ?: y2 K
* B9 }* s# d# _% i* ` 最先Unzip安裝文件到你的硬盤上,比如展開在c:\php。
4 x# g" b! S9 l8 [; H d @ K' p0 j8 b$ C5 r# Z
拷貝文件'php3.ini-dist'到你的'%WINDOWS'目錄下去,並改名'php3.ini'(在Win95/98為c:\windows,在
0 h# V" O$ R8 T: ?& XWinNT/Win2k為c:\winnt)。
! B: T3 H1 o8 P' R+ D: Z% F0 H- y, |
按下面編輯php3.ini文件: 2 d$ @8 r( D, h/ O) f2 j- W
+ T7 D6 A$ [# e# } o 改變'extension_dir'設置為你的PHP安裝目錄(c:\php),或存放'php3_*.dll'的目錄。
$ J; \" l x" \, T" X
# a; @ R* |! Q5 B9 I$ W( k 選擇想在PHP啟動時裝入的模塊。你應該將'extension=php3_*.dll'行的註釋去掉來裝入這些模塊(一定 9 g8 y# H! f! {, M, E
要確認去掉了extension=php3_mysql.dll的註釋)。一些模塊要求有額外的庫安裝在你的系統上才能正常工作。
5 q# e4 X: |0 w/ t. D) Y) I4 N& P
PHP問答集(http://www.php.net/FAQ.php3)有更多關於如何得到支持庫的信息。你可以通過使用: " x7 F, O: E* Y" z! ]+ r1 `
dl("php_*.dll")動態地裝入一個模塊。 2 S9 e% h7 u7 Q, T1 g/ Z" T
" V/ z6 y0 R; Z+ k0 @5 B1 x* c' s7 I9 z PHP擴展庫以'php3_'為前綴。這個可以防止在PHP擴展與它們的支持庫之間發生混淆。 ; M1 h& S% q3 e& h6 L
1 ?: j0 Q1 X* r/ G: E 現在跟著簡單的步驟配置OmniHTTPd: 0 y+ f" o1 ~2 O) v
+ |# \+ C2 \7 l7 C% o1 q 在系統托盤中右擊藍色的OmniHTTPd圖標,選項屬性(Properties)項;
% A, x( D$ o' q, t0 i. }: K" C/ T- ?' s, j
點擊Web Server Global Settings項; ! ]8 O9 ^8 {3 C |* m
8 N" L- L: `' \
點中'External'tab標籤。現在,在"Virtual"域中輸入".php3",在"actual"域中輸入"c:\php\php.exe", 1 z9 U8 I- f0 y! x; f
然後單擊"Add"。 # I6 Z* T$ k4 f/ d- d$ q
* g& m8 D) Q u 選擇Mime tab標籤並且在"Vritual"中輸入"wwwserver/stdcgi",在"Actual"中輸入".php3",並單
Z2 k& W0 O7 F" ?9 v6 f擊"Add"。 " L' Z; D* b! ] \( P" d6 I
, a Y0 B) B5 y* l, G
單擊 OK。 3 u9 e# {1 c7 U! }$ g8 R' p q9 o0 v
0 K3 @: v5 x3 ~# F1 D& u; V 在同一個窗體中選擇Default Virtual Settings;
' r. o; G5 F* r- f0 U0 x9 T$ s
+ b1 @4 M# f: D3 Z+ _, F: Q. n 現在單擊Server tab標籤;
( ?0 J) B1 ^& X7 d( h! Y6 O# s+ `- y- F' v( i9 O" m# o" L5 ~7 K( D
在"Default Index"域中輸入"Index.php3"(用逗號分隔)。這將告訴web服務器也可以識別index.php3文件。 9 v2 e( v3 z$ l. H4 u* z" ^, E
8 u# Q9 V g$ G3 Y 單擊 OK。 / g; s9 l) y5 k" @/ j' h( w3 Q
@, B( E A p8 L
好,足夠了。讓我們測試一下PHP是否在工作: . [- I5 X" U2 ?: Y) K. c$ l& B
/ D" Q+ B% \) x) K" _0 c 創建一個名為index.php3的文本文件,寫入下面的文本: y- p' N, Y2 J" m( p+ ?" ^: i, V
$ S( [; ~" W! ^$ ~; p( r; [
<?
) h( G1 `# X: Secho "I made it!";
, X4 H) r/ d7 n0 X1 T. G) ?/ m( @?> 6 |6 c; m4 P& Y0 v
1 L: P1 S& M2 K4 L7 ^6 R 啟動你的瀏覽器,並指到localhost。你應該在屏幕上得到"I made it!"。 " m, \6 u7 {' g7 O0 O8 M
' N- b7 |& c* b# ^ 下面,得到和安裝MySQL: & q$ E8 U3 [; [
3 _6 c) h. l7 _9 v 去http://www.mysql.com/download_win.html,下載MySQL-Win32發行版,將zip文件解壓到一個臨時目
* \( W2 l+ o( b, X6 A- r7 t# U錄並且運行安裝程序(setup.exe)。
2 D+ v% |- h/ D4 |# j ^( E6 q1 ^# C# M5 T }2 h% ?
如果你選擇了缺省的典型安裝,所有的MySQL文件將會安裝到c:\mysql目錄下。 $ s$ ~1 _* T0 t$ q. R- @
, z, M9 o) }+ m* B
現在,跟著以下步驟,每一步都要執行正確。 . Y9 Z, t0 X0 y
l0 p3 c3 r. ~ 進行一些測試:
- |3 Z2 `" t: ~2 l$ ^) ? d
! \+ e) L/ J4 f k) ~# t 首先,你要先運行mysqld-shareware.exe守護程序,它位於c:\mysql\bin下。你可以看到一個dos窗口, ' D, Q9 o! N) v5 x. x" i5 S+ c
並在幾秒鐘後關閉。如果沒有顯示錯誤信息,MySQLd就已經運行了。 ' v2 y0 c" P j: F' ?* j
8 h) i6 e6 i! ^1 j8 o; y
如果想檢查一下MySQL,只要運行c:\mysql\bin\mysql。你將會看到有"mysql>"提示符的終端窗口。很 / U" ~/ {+ z3 F; G$ b* b+ O' h4 s
好,我們可以同MySQL服務器進行對話了。 , a% X- E1 }/ N; J1 {# ]; A4 y
& Z' b! [5 d5 e1 X6 M第二部分 -- 創建和縱一個MySQL數據庫:
% K; o; n2 Z. ^+ s% g% z" u6 M w1 @/ p
首先我們需要創建要使用的數據庫和表。數據庫起名為"example",表名為"tbl",有以下字段:識別號,
1 ~7 [) M O4 n名,姓和信息。要通過mysql終端完成建庫和定義表的工作,只要雙擊或運行c:\mysql\bin\mysql.exe。 & r* x) ]+ g$ ^- b* J; G
% |- u2 U+ E a8 s) l$ }1 z 如果要看在MySQL中已經定義了哪些表,可以使用(注意mysql>是終端提示符):
" H& C& [( Y* E/ a N( z9 j+ w4 U9 F2 o/ G1 `
Mysql> show databases; <回車> 7 P8 s1 @$ B+ K6 B+ C% h/ M4 a1 p
. ^3 a/ V3 ]; d7 A$ P5 K) H+ ?( N
這個命令可能顯示如下信息: $ T: G5 z" ?2 j, \& B/ _) O
0 ^1 I5 V, t( D5 R4 }. b$ c% A
8 D5 E9 a0 P" [" w* D: b S
$ }/ o% q8 M. S" S4 F/ t+----------+
" B8 b3 y7 e- [/ H| Database | ! c; ^, j# c4 \7 A- h
+----------+ 9 f6 h/ g" a! N
| mysql |
6 Q# A9 N1 k, ]6 M. F) O. }1 ?| test |
; |$ w9 _. h# F! F/ T+ l1 ^+----------+
) l2 L w1 E Y2 rows in set (0.01 sec) 4 Y, f% v0 M6 m$ L$ x8 \7 ^4 Y5 o
1 h; D3 H) V% i! H: b7 t; r 為了定義一個新的數據庫(example),鍵入: + V: }; q9 a# O: m6 p" ? D
. ?* g: N! j7 t2 r# B- m
Mysql> create database example; <回車> : Y9 q- o& W/ V0 n6 B' k( b
+ S0 s5 D& g2 Z
你將會看到一個回答,如: * T9 S. d+ U3 l6 C; [# t
! I$ f3 D+ E( H4 l6 P* Y B. s- fQuery OK, 1 row affected (0.17 sec)
* ^! s, L5 x" t, p& ?# ? K1 g1 N( L# @" v+ i) A) Z
很發,我們現在有了一個新數據庫了。現在我們可以在庫中建立一個新表,但首先我們需要先選中新的 " M: l+ j, |7 c# F: |
數據庫: ( d4 a2 C' k* _- C! S
A; w u' i0 z7 p
Mysql> use example; <回車>
& X {$ T& R7 G9 ~: I/ [3 n6 V1 e
回答應該是: ) L. j/ h: A5 H' Q7 b/ i5 G
4 g) `; w" f6 U$ ~
Database changed 7 l9 R/ @" N1 n; B3 Q" g3 O
( z& P4 N+ m" d3 p6 k
現在我們可以建表了,有如下字段:
% _. o6 q# t+ t" {' l# W4 O5 o: C5 B9 n+ I) z
索引號 - 整數
: `% d0 Z- E* }: X) Q 用戶名 - 最大長度為30的字符串 , ?+ `& D/ c7 A- G9 d: b% ]
用戶姓 - 最大長度為50的字符串 : o& c) Q* ~( k* N/ u1 K
自由信息 - 最大長度為100的字符串 9 V l, f& b+ z# {: v2 ~; H
7 b! k- A4 k) l9 ~ 在MySQL提示符下鍵入下面的命令來創建表:
+ V" J9 E; U0 N) ~
$ d# B) _+ w5 [& `. C% n- \MySQL> create table tbl (idx integer(3), UserName varchar(30), LastName varchar(50), FreeText varchar(100));<回車> ; u( d- O& V+ I0 M6 \
0 x3 t5 u% |: _6 ]0 ~' q4 r
回答應該是: 0 I! T% e% ?/ z" i" Z5 e
) j% t; c, J0 H; t0 G) @: z+ JQuery OK, 0 rows affected (0.01 sec) ) W: w9 Q8 j4 R) B4 _
, i, e$ F+ B0 K! b3 d
好,讓我們看一下從MySQL提示符下看表是什麼樣子的,鍵入命令: " k, b! n4 z0 u* B8 v
; \2 M3 `4 O' y. Q& M9 g: J
MySQL> show columns from tbl; <回車> % D% l: X: ?6 V4 ^
; z6 _' J8 }3 ?% B; M 我們將得到下面的結果: , o: {9 E6 ~: ?3 I
7 ~) t8 l- q' f) \2 G1 _
1 d/ K* T6 ^+ S+ |# }+----------+--------------+------+-----+---------+-------+
1 @8 s0 v! Y5 n: m) b- @| Field | Type | Null | Key | Default | Extra | ! v! C* q8 r; p( B0 W- W
+----------+--------------+------+-----+---------+-------+ ! e9 ~. e- n. E. @7 R
| idx | int(3) | YES | | NULL | | O9 c2 v* H) V* j% `. {, I ?
| UserName | varchar(30) | YES | | NULL | |
" }7 J& i! F$ E; e$ v| LastName | varchar(50) | YES | | NULL | |
7 @" n- p3 O+ y- p* q. u| FreeText | varchar(100) | YES | | NULL | |
2 {( {; q u4 M8 V5 ^+----------+--------------+------+-----+---------+-------+ 3 W" y6 G8 p- i4 P' z X# ?
4 rows in set (0.00 sec)
3 v7 |9 `- j; m5 u3 _ t% Q/ z" i, M( s8 n
i4 A J" }: ]9 L6 V8 ~4 N 在這裡,我們可以看到剛創建的表"tbl"的內容。 ; s& u. B# A9 i5 S
+ Z( l6 Z9 l% _% f4 T
現在讓我們看一下表中有什麼內容。鍵入下面的命令:
1 V9 w$ R) i `6 o3 Y* j* g, a& P9 r! M$ c7 a
MySQL> select * from tbl;<回車> 3 {. ^) T" V, U% k& H8 S+ y( u5 u
0 s S2 H6 T+ j: g 這個命令是用來顯示表"tbl"中的所有數據的。輸出可能是: % j8 u* r0 r$ V" A7 u
& n) N7 ?. g7 {9 b/ W
Empty set (0.07 sec) 9 w5 I- Q9 \/ b) t2 R
) h8 N# c' @) e6 g+ L1 S6 E R
之所以得到這個結果,是因為我們還沒有在表中插入任何數據。讓我們往表中插入一些數據,鍵入:
) j7 t) y: G8 y; f1 f n2 I
2 d; N" X9 V8 i) a5 xMySQL> insert into tbl values (1,'Rafi','Ton','Just a test');<回車> 7 Y) P5 t: f! n! D8 M
Query OK, 1 row affected (0.04 sec)
# g$ M$ G. i7 e& { o; p( x3 R& _) a' b& e& M7 n* h
如上所見,我們插入到表中的值是按照前面我們定義表的順序,因為使用的是缺省的順序。我們可以設
}4 O- r% [; k, }7 O定數據的順序,語法如下: ! k4 ?; _: u# i) _
, v) g6 L% E3 s
MySQL> insert into tbl (idx,UserName,LastName,FreeText) values (1,'Rafi','Ton','Just a test');<回車> - M& b/ P! F+ i
" _3 [, n/ p, j4 X% p5 t 好,現在我們可以再看一下表中的內容:
# _/ ^* c7 R1 b3 G( k R8 T+ o
/ C! k9 v9 R: s- Y+ H6 @+ ^MySQL> select * from tbl;<回車>
( b* k5 U% C' v- ] i$ \- v) R$ S
" l- y! }7 C' W 這次的結果是: |
|