本週的課程,我們已進入實戰的起步,看到這一堆文字,先別急著暈倒 ... 看,很簡單ㄝ


本程式碼主要是提供給在 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);


?>


 


承續文章: 如來神掌

創作者介紹
創作者 夜貓的棲息地 的頭像
夜貓

夜貓的棲息地

夜貓 發表在 痞客邦 留言(5) 人氣( 4 )