php mysql資料儲存到資料庫實現方法

來源:互聯網
上載者:User

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;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.