
本週的課程,我們已進入實戰的起步,看到這一堆文字,先別急著暈倒 ... 看,很簡單ㄝ
本程式碼主要是提供給在 AppServ 2.5.5簡易測試套件軟體的 Apache 主目錄 www 中執行
當然,如果上傳到個人的 PHP 網站中也可以執行,但建議用班級網頁中所下載的版本
雖然我們也可以透過 AppServ 所提供的 phpMyAdmin 來執行 MySQL 系統的操作,但
我們必須了解,phpMyAdmin 的功能也是由一堆的 .php 網頁所組成、提供 ... ... 所以囉
只要我們自己能撰寫 SQL,透過 PHP 基本語法、函數、資源,我們自己來也可以咩~~
其實,我們將發現,撰寫程式碼雖辛苦,但是,遇到類似的運用時,可就簡便得多囉

來吧,就這一小段,資料庫的連結操作都很固定 ... ... 雖然,還是有版本的差異
重點是在 SQL 的撰寫 ... 包括字串的處理;解讀之後,就要慢慢累積實際撰寫的經驗
當然啦!PHP 的基本語法,尤其是判斷、迴圈、陣列 ...,反正 ... 廢話 ... 都很重要啦
瞭解資料庫的資料表為何要如此設計之後,現在,我們就要開始依需求建立這些資料表
請將下列 PHP 程式碼區塊複製到自己 .html 網頁模組的"適當"位置,更改副檔名為 .php

好啦,這樣,PHP 伺服器網頁就已經製作完成,接下來,就是要將它送到網站主目錄中
如果要複製到真實的網站中,當然,最好用的工具就是 FTP 檔案傳輸的client端軟體啦 ...
若使用 Dreamweaver 軟體管理,在新增網站管理時,也請務必設定、測試 FTP 的連線
上傳到網站主目錄中之後,剩下的,就是透過"瀏覽器",請求網路伺服器幫我們執行嚕
注意!同一個資料庫中的資料表名稱不能重複,也就是說,下列程式只能成功執行一次
<?php
/*
以你的資料庫使用者[名稱]與[密碼]登入到網站MySQL資料庫系統的特定資料庫
mysql_connect('伺服器位址', '登入者名稱', '登入者密碼'); 無法直接指定個別資料庫
*/
$link = mysql_connect('localhost', 'root', '' ) // root 使用者,預定是沒有密碼
or die('無法登入MySQL資料庫系統: ' . mysql_error());
echo '已成功登入網站的MySQL資料庫系統與個人資料庫...';
/*
已經登入MySQL資料庫系統後,如果要進入到其他資料庫,請使用此語法
請注意mysql_select_db('classic', $link)與mysqli_select_db($link,'classic')的參數順序相反
*/
mysql_select_db('classic', $link)
or die('無法進入你指定的資料庫:' . mysql_error());
echo '已成功進入你指定操作的資料庫中...';
// 撰寫建立範例資料表與欄位細節的DDL-SQL,將該些文字暫存於陣列變數 $sql[]中
$sql[0] = 'CREATE TABLE customers ('
. ' cid CHAR(10) NOT NULL,'
. ' cname VARCHAR(30) NOT NULL,'
. ' csex CHAR(1) NOT NULL,'
. ' cadd VARCHAR(99),'
. ' cmail VARCHAR(50),'
. ' PRIMARY KEY (cId)'
. ' );';
$sql[1] = 'CREATE TABLE orders ('
. ' oid int UNSIGNED AUTO_INCREMENT,'
. ' cid VARCHAR(10),'
. ' done BOOL,'
. ' odate TIMESTAMP,'
. ' PRIMARY KEY (oid),'
. ' FOREIGN KEY (cid) REFERENCES customers(cid)'
. ' ON DELETE SET NULL ON UPDATE CASCADE'
. ' );';
$sql[2] = 'CREATE TABLE sorts ('
. ' sid CHAR(6) NOT NULL,'
. ' cname VARCHAR(50) NOT NULL,'
. ' PRIMARY KEY (sid)'
. ' );';
$sql[3] = 'CREATE TABLE products ('
. ' pid CHAR(8) NOT NULL,'
. ' sid CHAR(6),'
. ' pname VARCHAR(30) NOT NULL,'
. ' price FLOAT(10, 2),'
. ' PRIMARY KEY (pid),'
. ' FOREIGN KEY (sid) REFERENCES sorts(sid)'
. ' ON DELETE SET NULL ON UPDATE CASCADE'
. ' );';
$sql[4] = 'CREATE TABLE items ('
. ' oid int UNSIGNED,'
. ' pid CHAR(8) NOT NULL,'
. ' quantity smallint DEFAULT 0,'
. ' PRIMARY KEY (oid, pid),'
. ' FOREIGN KEY (oid) REFERENCES orders(oid)'
. ' ON DELETE CASCADE ON UPDATE CASCADE,'
. ' FOREIGN KEY (pid) REFERENCES products(pid)'
. ' );';
// 透過 for 迴圈與 mysql_query() 指令執行 $sql[] 中的多個 DDL-SQL 指令
for( $i = 0; $i < 5; $i++ )
{
mysql_query($sql[$i], $link)
or die('資料表 ' . i . '並未正確建立:' . mysql_error());
}
echo '... 資料表業已全部建立完成!!';
/*
資料庫操作完畢後,應關閉與MySQL資料庫的連線;
雖然 mysql_connect( )的連線會在網頁執行完畢後自動關閉,但,要有此概念
*/
// mysql_close($link);
?>
承續文章: 如來神掌
請先 登入 以發表留言。