初學入門 PHP 和 MySQL8 u' [7 [$ |& \' v0 w7 x: x
2 n4 K2 R4 }1 G( K9 V; m: G0 _
初學入門 PHP 和 MySQL9 Z# F% n: _9 e' Y$ S
$ S( i( S6 X7 z, x. H$ @% Z! a* Q9 d7 h
初學入門 PHP 和 MySQL
0 e" k& t! a$ y4 g- m# y
, R' z/ B7 V8 n+ r g; j2 T 我想要使用PHP和MySQL,但是如何安裝和運行呢?什麼是最基本的事情我應該知道的,以便讓一個簡單 Y+ ^/ [: p3 x% [, i& n# L
的PHP - MySQL應用程序工作?
- `/ B; O0 |# l0 ~( O% j2 x 這是一個基本的教程。沒有怪異的代碼,只是一些基礎。
& @: e1 V2 ^2 ]
8 A m( H+ V N# P 多說一句,現在有大量的教程是基於UNIX機器的,這個教程將集中在基於Windows平台上。然而,除了
( [! D! m( x" U/ }- U0 X安裝部分,有或多或少的針對於Windows的說明外,其它部分對所有的平台都是一樣的。
2 H1 W! w% J' J0 l% t$ u/ K3 U/ Y8 e- u, T- a6 C& K
在這個教程中,我們將一步一步地建立一個小的網站,使用了PHP和MySQL的下面特性:
5 | ^- `) j' G* ~5 [9 @9 t6 S. W
1. 查看數據庫;
3 P2 A" Q1 r9 l9 A% J7 B, n 2. 編輯數據庫的記錄; ! Q3 ?! ?& N% a9 B; t; c
3. 修改數據庫的記錄;
# R3 G9 ^ O, v9 |4 e* g# s0 C 4. 刪除數據庫的記錄。 9 g) K! E1 t' N$ M, d: o
8 E$ _9 V3 ?2 i# G0 d
我們將同時學習MySQL和PHP,一起去感覺它們。 / J/ j9 @- a8 v$ U3 G
* W$ T0 b* i/ L" C
第一節 - 收集和建立必要的項目 # p ]+ i2 K* i6 v2 O
5 d% ?9 l/ I* T1 ^8 [' A$ T 好,開始工作。為了開始PHP-MySQL我們需要一些準備:
- X: r6 H" `0 t. x/ B K G$ s5 }% g5 z: C
1. 運行web服務器; : c' S p) D( C# D8 i
2. 增加PHP擴展;
7 `2 t1 D! p9 d! X2 L, F! b/ C 3. 運行MySQL。
/ S* d4 f0 }! r! |6 a8 T% g$ o+ k
第一步,得到和安裝Web服務器
6 z) K# r: I! Q% I2 I7 p l) R1 m y1 ]2 _
讓我們假設一下在你的機器上已經有一個運行著的web服務器。在Windows下有幾個好用的web服務器應 ( c8 s; K ]5 R9 ~( n3 ~
用程序。要注意一件事,為了運行php/mysql你所選的web服務器應當可以支持擴展。
# S7 R' R! T) D; d7 x9 W0 `+ K. r# T0 Q, o5 |0 y. v' _
一個在Windows上最容易安裝的服務器是OmniHTTPd(http://www.omnicron.ab.ca/httpd/,它是一個非 " p/ J: \% J: X1 L& a0 H
常好的自由web服務器。 . T1 ^! C" l E* R
* o7 E% L0 {4 s1 L0 D) F
一旦你從站點上得到了安裝文件,雙擊它並且安裝web服務器。如果你在安裝時全部選擇了使用缺省值, . ~5 a: L5 Y. K, ~; q+ X
那麼你將會把它安裝在c:\httpd下。一旦安裝成功,安裝程序將啟動web服務器,帶有一個歡迎窗口,在 9 {% i# D6 O7 u
windows的系統托盤中可以看到一個新的圖標。
5 b3 P1 {9 D( ?- N& z
+ `' d. h0 V! v* l8 O, D 好了,第一步做完了。
. z- g6 x7 [; Y g! p- d) W
7 `1 U6 R3 `8 G1 S, X 第二步,下載和安裝PHP發行版 8 K8 T! R/ P3 R' Q3 h$ j) t4 V
# }& y8 K2 t- M, i6 r 得到PHP Win32發行版很容易:只要去http://www.php.net/download-php.php3,並且選擇一個最好的 9 S o2 _8 m# U ~* s2 V6 C
位置就可以了。
8 n& z1 U4 g: c: h4 L
" a) E g* m# x" D- _9 p 在OmniHTTPd上安裝PHP非常簡單。 + H/ g/ }( r5 m
5 G7 ]2 N r/ d1 c& U 最先Unzip安裝文件到你的硬盤上,比如展開在c:\php。 4 B0 ]9 N2 P- J$ e3 ^) ?; r! D
. d4 L4 F6 F" Q6 B2 M8 v b" E
拷貝文件'php3.ini-dist'到你的'%WINDOWS'目錄下去,並改名'php3.ini'(在Win95/98為c:\windows,在
! R7 n o6 ?' y- Z4 LWinNT/Win2k為c:\winnt)。 & C" [- P: _' Y0 C9 e: f
/ s/ I2 x1 [% k
按下面編輯php3.ini文件:
- b M% P O! i0 o/ q0 z, z
5 t4 {& P$ Q8 v1 g# [ 改變'extension_dir'設置為你的PHP安裝目錄(c:\php),或存放'php3_*.dll'的目錄。
7 E- [$ Z; ~# o; q
E6 I( q9 ]) S5 y+ Q3 A) d 選擇想在PHP啟動時裝入的模塊。你應該將'extension=php3_*.dll'行的註釋去掉來裝入這些模塊(一定 9 |' @9 {* y! a* H: ?% D- q! K* L& b
要確認去掉了extension=php3_mysql.dll的註釋)。一些模塊要求有額外的庫安裝在你的系統上才能正常工作。
+ [# ?& n1 m9 I+ F' L1 v
" f3 u' y2 H# O( r# L, i v7 L; y PHP問答集(http://www.php.net/FAQ.php3)有更多關於如何得到支持庫的信息。你可以通過使用:
& L* {4 Y) f& k$ {' [+ ]3 D, hdl("php_*.dll")動態地裝入一個模塊。 / w+ a6 y; K# M: V: n
' t( a' s" B, d" f1 ?' A# d- o
PHP擴展庫以'php3_'為前綴。這個可以防止在PHP擴展與它們的支持庫之間發生混淆。
8 c( M+ s& o. v8 w( r1 a2 y. J( a7 R# h- f$ c f+ j6 Y$ S
現在跟著簡單的步驟配置OmniHTTPd:
" I) Q. u; u- w5 H5 z6 X1 G; l! v7 [) G! ^5 r0 R4 u/ G
在系統托盤中右擊藍色的OmniHTTPd圖標,選項屬性(Properties)項; / V9 M1 v7 A& L: j
/ B& Y& c U- i+ F% D; J
點擊Web Server Global Settings項; ) m- m9 R; C r% o$ M/ T
9 D y Z& E0 F. }+ u) U4 p" W+ @ 點中'External'tab標籤。現在,在"Virtual"域中輸入".php3",在"actual"域中輸入"c:\php\php.exe", / G3 Y# N9 c* G" ~
然後單擊"Add"。
5 O2 i/ i |+ ]) b* B3 L- B4 h2 `+ h5 [+ Y
選擇Mime tab標籤並且在"Vritual"中輸入"wwwserver/stdcgi",在"Actual"中輸入".php3",並單
0 h3 n% i1 L% P y2 ~- e0 ?擊"Add"。 * r8 }/ _. x0 i5 W# X; P; v" M& O
" | F4 ^$ P+ \& L0 S9 g
單擊 OK。 ; r' x1 J0 ^4 z Y0 ?
& p S: e$ T& O% t, c 在同一個窗體中選擇Default Virtual Settings; % z: Q$ B* u! m1 @8 a0 F2 S
" O* w. R6 {& d, r) O 現在單擊Server tab標籤;
7 ^$ a0 x- {5 }; D8 o* J- B$ I; b" ~5 O) Q( U; Q6 v |0 I
在"Default Index"域中輸入"Index.php3"(用逗號分隔)。這將告訴web服務器也可以識別index.php3文件。 7 R6 C W+ o* H
9 O6 Q. c3 F* b, E
單擊 OK。
$ v5 Q3 ?% ]/ b, R) N9 o( s; i) r5 \* }% X" N% C6 O2 L" r8 h
好,足夠了。讓我們測試一下PHP是否在工作:
+ H! S1 @+ G1 d& I5 `: {5 N: ^' y( R5 ]8 b8 f
創建一個名為index.php3的文本文件,寫入下面的文本:
" Y8 T1 I2 k7 M" h3 o' |% { H
, c3 w G% y8 b9 m! A% O6 }<?
" N+ i' w, y; {0 p# n/ jecho "I made it!";
) t$ n8 ^& c8 w' f?> # l6 l$ o. i1 {* l, r8 c; V3 C% \
9 Z/ F1 R% [$ K! }# z
啟動你的瀏覽器,並指到localhost。你應該在屏幕上得到"I made it!"。
. G! Q( `- T( W/ n0 `( D# p, w/ f z) ] X5 ^$ d4 T. c" ^6 y
下面,得到和安裝MySQL:
; x8 W7 r* n! V! C
$ t1 ^4 q$ y! S9 X! W! J5 | 去http://www.mysql.com/download_win.html,下載MySQL-Win32發行版,將zip文件解壓到一個臨時目 ( X; p: A# b$ ]
錄並且運行安裝程序(setup.exe)。
- R+ h+ i5 }6 r
+ r' M, G) P" I5 r- Z 如果你選擇了缺省的典型安裝,所有的MySQL文件將會安裝到c:\mysql目錄下。
" F1 g* |2 y' B# T$ H1 g/ `! L; A( X- @, {0 U# b1 P* P. N: d
現在,跟著以下步驟,每一步都要執行正確。 ( m4 H/ k: @$ P- M4 L2 W7 \$ ]
+ B7 m. o- \1 ]: v, g8 y% q
進行一些測試: * x! A1 R0 R/ e+ D8 Y
' V R3 Z# n$ ]' k* V
首先,你要先運行mysqld-shareware.exe守護程序,它位於c:\mysql\bin下。你可以看到一個dos窗口,
, x- a5 q9 }# i1 m6 ]並在幾秒鐘後關閉。如果沒有顯示錯誤信息,MySQLd就已經運行了。
) X% h `, w# G* T" S) ]. [" Q3 G2 w- v3 C/ p. D* ? z. R. Z, C
如果想檢查一下MySQL,只要運行c:\mysql\bin\mysql。你將會看到有"mysql>"提示符的終端窗口。很
) N- N. @: p. o Z+ w好,我們可以同MySQL服務器進行對話了。
% r: i, Y R0 X% ~( { d
! f7 R/ o7 Z0 Y$ h$ c, p3 h* L) |第二部分 -- 創建和縱一個MySQL數據庫: % {2 ~4 j/ ?5 D# G3 X; Y
' p$ ]7 E( c: D7 I- }; {3 N" j7 J 首先我們需要創建要使用的數據庫和表。數據庫起名為"example",表名為"tbl",有以下字段:識別號, 3 b) u8 b8 D$ e
名,姓和信息。要通過mysql終端完成建庫和定義表的工作,只要雙擊或運行c:\mysql\bin\mysql.exe。
* p& o/ m' ^7 D4 V( N
- Q5 i, X' ^$ l; t 如果要看在MySQL中已經定義了哪些表,可以使用(注意mysql>是終端提示符): 6 j" d+ @; q: M6 Y8 c! e6 A
; h7 K8 B$ @& Z2 p I7 fMysql> show databases; <回車>
& W& H& v9 R+ c/ l5 X& Y* N0 o7 G' A& ~1 _: |! _- k$ f: I+ Y
這個命令可能顯示如下信息: ; [7 D1 k3 P9 J0 F- D" S9 X* Z) `
# ?0 z8 ?+ n$ ^! p* e8 ?
6 D2 w m4 |+ [. z$ H
. Y4 `3 v3 N0 C* o* V% g
+----------+ 3 `& n9 R2 Z( Q& o* n3 o& Q
| Database |
- ~ `+ }+ A+ Y4 o# T7 | ]+----------+ 8 T; f" ~/ A' R0 c
| mysql |
J% |% {9 D" a. W+ C9 b$ C| test |
& v) O9 j; N+ y* U D5 x& G+----------+ % F3 |: n! [; ]$ E1 E4 h9 e
2 rows in set (0.01 sec) ) k1 V" d; O7 J8 u) `. P+ u
7 u" `, ^5 ?. P. {* q, ` 為了定義一個新的數據庫(example),鍵入:
: `# Y E: D1 J# K/ {4 s! ~) }4 b( k
Mysql> create database example; <回車>
$ Q9 c: O# S0 ~5 T* B! H% Q
. E; g% H4 i W- I$ a0 U$ s 你將會看到一個回答,如: . W8 H# G' r0 i: v3 F. ]: p
- e D5 D9 ?1 f) d, H3 Q' b- S
Query OK, 1 row affected (0.17 sec)
' f7 V3 A# H7 s& U9 P1 e
9 c% }/ U* @8 ]4 s 很發,我們現在有了一個新數據庫了。現在我們可以在庫中建立一個新表,但首先我們需要先選中新的 " G: V x" Q4 ^7 _' P+ {
數據庫:
: X% k# ?9 o5 d5 m: V
, W% V, z6 z p3 q( g% S# Z+ IMysql> use example; <回車>
+ @' T4 L% k0 {. _# h& s
. ?% U- q. [1 g K; `" k3 l9 m 回答應該是:
+ l* H! U, `4 s2 B6 i% {
) W( B: k( ?$ ?Database changed ) w r5 U' u& K" j) a5 R: G
- ~9 Z; |* l" S! a7 R
現在我們可以建表了,有如下字段: 5 {, M7 s$ ]3 L% `
0 }3 l" @- Y! f' W8 ]) y8 k 索引號 - 整數 6 F9 w' A6 x& d# s Z, }
用戶名 - 最大長度為30的字符串 2 j- ]& E. L( L; h( e7 A
用戶姓 - 最大長度為50的字符串
; \. m- {6 h% `2 D* D$ a7 i 自由信息 - 最大長度為100的字符串
2 A+ g+ J9 B2 [' y' ~' y
7 J. @3 y8 a5 |% n \7 k 在MySQL提示符下鍵入下面的命令來創建表:
4 v2 q1 Y2 {3 w% e: a4 f+ w X; y. D1 Y: g1 i
MySQL> create table tbl (idx integer(3), UserName varchar(30), LastName varchar(50), FreeText varchar(100));<回車>
) @% l9 ^+ d- u4 @! f
5 C: ^/ Y$ s. r! Y9 I 回答應該是: 7 Q- }# f/ ?8 E' P/ ~9 o9 b4 d
, f9 F3 O- s4 V( r, M5 m/ \" D% EQuery OK, 0 rows affected (0.01 sec)
# O7 e+ d* M- T/ t0 g# T! T7 t) l1 ?$ m2 u
好,讓我們看一下從MySQL提示符下看表是什麼樣子的,鍵入命令: & o0 b: J4 v+ X3 A1 }
2 ^2 c8 S: q6 l2 o* d, s$ lMySQL> show columns from tbl; <回車> % g) [& K+ a, R/ _" l5 ^
) J4 q" n2 G' P: t) A$ r( Y
我們將得到下面的結果:
/ L3 D9 g& q' Y( W8 G& E/ C# j, M+ G6 ?+ x
& w0 V+ a; d8 p- V' q+----------+--------------+------+-----+---------+-------+
# `. S' [% k$ N/ Q, x& Z| Field | Type | Null | Key | Default | Extra | l* e' R1 A3 f, ?
+----------+--------------+------+-----+---------+-------+
$ v- d7 v: r$ ?! I* U* H| idx | int(3) | YES | | NULL | | % V( ^1 _& n8 J X b9 g2 l
| UserName | varchar(30) | YES | | NULL | | 8 w4 x2 o3 n. D/ `5 Q8 Y ]( |
| LastName | varchar(50) | YES | | NULL | |
+ ?% Z. o: c* I" d9 r| FreeText | varchar(100) | YES | | NULL | | $ T9 }' C0 h- K
+----------+--------------+------+-----+---------+-------+
$ U: D6 E$ X) Y8 R. n+ I% d/ K4 rows in set (0.00 sec)
8 `! r4 [/ b5 U
/ `9 `9 G! o9 q( x0 B) Z' O+ k, P, g+ M+ F% l' m
在這裡,我們可以看到剛創建的表"tbl"的內容。 3 O8 H1 W/ ]/ d I8 p
1 J. Y) v9 |# {: N2 E# N 現在讓我們看一下表中有什麼內容。鍵入下面的命令: 7 l8 t5 H- w! C1 P$ ]
& C7 `& m8 P0 c QMySQL> select * from tbl;<回車>
b1 [7 O8 F& t1 z! `5 y2 J& Y7 t5 `! D% A2 e7 \
這個命令是用來顯示表"tbl"中的所有數據的。輸出可能是: & y, @: ^; W6 {- R. X$ T
9 h( G2 k R: p8 V* z& `8 i
Empty set (0.07 sec) 5 J/ z0 o, q& W
! W( d3 I( G. s& @' F' l4 {0 v9 e: B 之所以得到這個結果,是因為我們還沒有在表中插入任何數據。讓我們往表中插入一些數據,鍵入:
' g5 m" h/ z$ i( B/ F2 I
* R& Z8 ^4 t# L& s- dMySQL> insert into tbl values (1,'Rafi','Ton','Just a test');<回車>
9 l1 p" }7 g R/ d8 Q3 X% B- DQuery OK, 1 row affected (0.04 sec)
, ]$ V, }* ` {+ _+ `& t m! H N$ H2 N- ~& g! Q, M* K
如上所見,我們插入到表中的值是按照前面我們定義表的順序,因為使用的是缺省的順序。我們可以設
* R' z" F+ m; u定數據的順序,語法如下: 0 _% ?4 E" f9 [
+ e6 W& E9 A2 B3 r \% j
MySQL> insert into tbl (idx,UserName,LastName,FreeText) values (1,'Rafi','Ton','Just a test');<回車> 1 Z e* w& ?. V& n. O
. j0 z+ t* p- g' `" C
好,現在我們可以再看一下表中的內容: 7 t0 }" j7 O- @1 a1 ~# V- M; O
) q8 B0 o5 j! _7 {8 iMySQL> select * from tbl;<回車> 1 j4 u' K; P9 D& v3 u
2 b( ]# Q( P* U# M2 W" ` 這次的結果是: |
|