1. 建立一個資料庫連接
2. 發送一些不是必須的語句
3. 選擇一個儲存的資料庫
4. 編寫資料庫插入語句
5. 發送這個語句
先看資料結構
| 代碼如下 |
複製代碼 |
-------------------------------------- -- -- 表的結構 `guest` -- CREATE TABLE IF NOT EXISTS `guest` ( `id` int(11) NOT NULL auto_increment COMMENT '客戶自增id', `name` varchar(16) NOT NULL COMMENT '客戶名稱', `email` varchar(60) default NULL COMMENT '電子信箱', `qq` varchar(11) default NULL COMMENT 'QQ號碼', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; -- -- 匯出表中的資料 `guest` -- -- --------------------------------------------------------
-- -- 表的結構 `post` -- CREATE TABLE IF NOT EXISTS `post` ( `id` int(11) NOT NULL auto_increment COMMENT 'post主鍵', `guest_id` varchar(11) NOT NULL COMMENT '發布人id', `post` text NOT NULL COMMENT '發布內容', `post_time` varchar(14) NOT NULL COMMENT '發布時間', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; -- -- 匯出表中的資料 `post` -- --
|
詳細的分析也就這麼五個步驟了,那麼我們開始第一步吧,利用PHP提供的內建函數mysql_connect來建立一個資料庫連結,這個函數需要三個參數,格式如下:
Mysql_connect(‘資料庫所在的主機’,’連結資料庫的使用者名稱’,’連結資料庫的密碼’)。這個函數返回一個資料庫連接資源號。
看我們在post.php中的連結代碼:
| 代碼如下 |
複製代碼 |
$con=mysql_connect('localhost','root','root') or die('連結資料庫失敗!'); mysql_query('set names utf8'); mysql_select_db('GuestBook'); |
第一行建立一個資料庫連接,把資源號賦給變數$con,如果串連失敗,結束程式的執行輸出提示資訊“連結資料庫失敗!”。
第二行發送一個字元集設定語句,讓資料在資料庫中的出入都使用utf8字元集。這個語句是可有可無的,其中的語句可以寫成set names gbk或者set names gb2312等等我們需要的字元集。
第三行利用PHP提供的mysql_select_db函數來選擇我們要使用的資料庫。
值得注意的是,mysql_query這個函數本身有兩個參數:第一個參數就是我們要發送的資料庫執行語句sql,第二個參數是資料庫連接的資源編號,如果第二個參數沒有指定的話,那麼程式就會尋找最近一個連結資源,也就是說這個參數不是必須的。我們以上包括將來的寫法都是沒有第二個參數的,按照程式的上下文我們第二行的語句可以寫作:
mysql_query(“set names utf8”,$con)這樣也是正確的。
這個函數的傳回值是布爾型的,如果語句成功執行就返回true否則返回false——瞭解這一點很重要。
好,到此為止我們的資料庫連接已經就緒,開始組裝我們的sql插入語句,看一下代碼(post.php 第67-76行):
| 代碼如下 |
複製代碼 |
$insertSql="insert into guest (name,qq,email) values ('$name','$qq','$email')"; if(mysql_query($insertSql)){ $guestid = mysql_insert_id(); } else{ echo $insertSql; echo mysql_error(); echo "資料插入失敗!"; exit(); } |
在這個片段的第一行中我們組建了一個sql的插入語句,這個看來沒什麼可說的,唯一點就是把變數寫進這些語句並且用引號包裹起來——對於數字型的不需要引號。
第二句發送語句,並判斷是否被成功執行。
這個地方需要說明:PHP中if判斷中的語句是會被執行的,例如if($c=$a+$b)這樣的語句被執行的順序是,先計算裡面的語句然後再對結果作出判斷。所以執行之後$c的值是$a,$b之和,判斷的時候是對$c作出的判讀。
所以在這個地方if判斷的是mysql_query($insertSql)的返回結果,語句已經發送到了資料庫。
第三行出現的函數mysql_insert_id——擷取最近一次插入資料的時候自增序列的值,我們這裡擷取的是guest表中的id,因為只有這個id才是自增的。以備後用。
這個片段的第五行到最後都是進行的錯誤處理,如果語句沒有被成功執行,那麼就執行這些程式,倒數第二行的exit();函數的意思是終止程式向下執行。
這時候我們已經把guest資訊儲存到了Mysql的GuestBook的guest表中了
看一下post.php檔案
| 代碼如下 |
複製代碼 |
//把以上插入取得的客戶id和留言資訊插入到post表中 $post_time = time(); $insertPostSql = "insert into post(guest_id,post,post_time) values('$guestid','$post','$post_time')"; if(mysql_query($insertPostSql)){ echo <<<tem <script> alert("留言成功"); location.href="index.php"; </script> tem; } else{ echo <<<tem <script> alert("留言失敗"); location.href="index.php"; </script> tem; } |