首頁 >後端開發 >php教程 >細說PHP結合mysql

細說PHP結合mysql

韦小宝
韦小宝原創
2018-03-09 11:33:576216瀏覽

相信很多PHP程式設計師在進行PHP開發中用到的資料庫都是mysql資料庫,而到底為什麼PHP開發要結合mysql資料庫呢,不是也可以用別的資料庫嘛,為什麼不用呢,那我們就一起看看,細說php結合mysql,為什麼PHP開發就要結合mysql。

相關mysql影片教學推薦:《mysql教學》                                      

第一部分:我的應用工具。

phpstudy:整合最新的Apache+PHP+MySQL+phpMyAdmin,一次安裝,無須設定即可使用,是非常方便、好用的PHP調試環境。你不需要再單獨下載安裝php、mysql、appche,簡單又方便。
先認識以下phpstudy:
細說PHP結合mysql

點擊上圖的“MySQL管理員”,選擇MySQL-Front
細說PHP結合mysql

##出現如下介面:

開啟之後就進入到正式的資料庫介面。

細說PHP結合mysql這裡只是讓大家見識以下mysql,後面會講它的具體操作。

這部分,我所出現的主要問題就是開啟圖5中的localhost時出現連接不上mysql的問題,實在沒有辦法才選擇重裝phpstudy。

第二部分:理解php、apache 、mysql之間的關係。

有一位顧客在網店上 購買了一本書,網店店主收到需求後會去找廠商拿貨,店主拿到貨把貨發給顧客。

流程圖如下:

細說PHP結合mysql我們從上圖得知,顧客和店主並沒有直接交流,而是透過店主來交換數據,店主盡提供溝通服務。
phpapache、資料庫三者之間的關係就像顧客、店主和廠商之間的關係。 php需要某種數據,直接把請求傳送給apache伺服器,apache再把這種請求回傳給資料庫,資料庫取出回應的資料交給apache伺服器,apache伺服器再傳送給PHP
1、為什麼php和資料庫不能直接溝通,非得透過apache呢?

打個比方:php和資料庫就好像兩個不同國籍的人,前者來自中國,後者來自美國,語言不通連溝通都成問題,更別說做生意了。剛好有這麼一個人叫apache,也就是懂中文又懂英語,把php的需求翻譯成英文後告訴資料庫,資料庫取出對應的貨物交給apache ,apache再交給php。


php語言與資料庫資料無法互相識別,需要透過apache來進行轉換.
#2、為什麼apache不能即當伺服器,又做資料庫,這樣就少了一個環節不是更省事嗎? 這設計到一個分工合理性問題。
如果把apache和資料庫合併,就相當於apache既當店主又當廠家,會大大加深apache伺服器工作量。資料少的時候apache還能夠承受,資料大的時候,apache還要負擔工廠倉庫的運輸和管理工作,最終效益說不定還會大大降低,倒不如把倉庫運輸和管理的工作交給工廠來做。

mysql資料庫(database) 世界上有許多中資料庫,mysql是其中最受歡迎的一種。
MySQL是一個
關係型資料庫管理系統,由瑞典MySQL AB公司開發,目前屬於Oracle公司。 MySQL是一種關聯資料庫管理系統,關聯資料庫將資料保存在不同的表中,而不是將所有資料放在一個大倉庫內,這樣就增加了速度並提高了靈活性。 (mysql資料庫相當於商品分類後放到不同的倉庫,每個倉庫都是一個小資料庫,而工廠就是一個大資料庫。這樣方便存取貨物,如果不進行分類存放,很明顯儲存效率會大大降低)。

RDBMS即關聯式資料庫管理系統(Relational Database Management System)的特性:

1.資料以表格的形式出現
2.每行為各種記錄名稱
3.每列為記錄名稱所對應的資料域
4.許多的行和列組成一張表單
5.若干的表單組成database

第三部分:利用php操作mysql資料庫

1.使用php腳本連接資料庫

PHP 提供了mysql_connect() 函數來連接資料庫。函數有5個參數,一般我們只用到前面3個。

这里你也许会问,php可以连接数据库那appache干什么去了。
这里说明一下,apache是一个服务器,其构筑了一个php和数据库可以沟通的环境.php和数据库这两个讲不同语言的人打电话,
通过apache这个同声翻译系统进行沟通

. server    規定要連接的伺服器。可以包含連接埠號,例如 “hostname:port”,或到本機套接字的路徑,例如 localhost 的 “:/path/to/socket”。
如果 PHP 指令 mysql.default_host 未定義(預設情況),則預設值是 ‘localhost:3306’。
. user      使用者名稱。預設值是伺服器進程擁有者的使用者名稱。
. password  密碼。預設值是空密碼。

php   mysql_close 用來中斷與mysql資料庫的連結。一般情況下腳本運行完後會自動斷開聯繫,所以這句也可以不寫。不過, mysql_close() 不會關閉由 mysql_pconnect() 建立的持久連線。
連接資料庫:

<?php
header("content-type:text/html;charset=utf-8");
$servername = "127.0.0.1";//服务器主机地址
$username = "root";//访问数据库的用户名
 $password = "root";//访问数据库的密码
 //phpstudy的mysql有一个默认用户名(root)和密码(root)

// 创建连接
$conn = mysql_connect($servername, $username,$password);

// 检测连接
if (!$conn) {
    die("Connection failed: " . mysql_connect_error());//die()输出一条消息,然后断开
连接。
}
echo "连接成功";
mysql_close($conn);//关闭连接。
?>

資料庫不是每一個人都可以訪問,只有有權限的人才可以進行訪問。下面我來示範如果mysql-front工具來新增使用者。

細說PHP結合mysql
新增使用者後:

細說PHP結合mysql
使用新使用者進行存取操作:

<?php
header("content-type:text/html;charset=utf-8");
$servername = "127.0.0.1";//服务器主机地址
$username = "sunwukong";//访问数据库的用户名
 $password = "jingubang";//访问数据库的密码
 //phpstudy的mysql有一个默认用户名(root)和密码(root)

// 创建连接
$conn = mysql_connect($servername, $username,$password);

// 检测连接
if (!$conn) {
    die("Connection failed: " . mysql_connect_error());//die()输出一条消息,然后断开连接。
}
echo "连接成功";
mysql_close($conn);//关闭连接。
?>

連線成功。

2、建立資料庫

php利用mysql_query(sql,connection)來建立或刪除資料庫。 mysql_query()把搜尋查詢的語句sql透過建立的連接connection傳送給資料庫。資料庫讀取之後會回應對應操作。

<?php
header("content-type:text/html;charset=utf-8");
$servername = "127.0.0.1";//服务器主机地址
$username = "sunwukong";//访问数据库的用户名
 $password = "jingubang";//访问数据库的密码
 //phpstudy的mysql有一个默认用户名(root)和密码(root)

// 创建连接
$conn = mysql_connect($servername, $username,$password);

// 检测连接
if (!$conn) {
    die("Connection failed: " . mysql_connect_error());//die()输出一条消息,然后断开连接。
}
echo "连接成功";
echo "</br>";
$sql = "CREATE DATABASE zhubajie";//CREATE DATABASE是sql语言中创建数据库的语句,这里是一个创建名为“zhubajie”
的数据库的字符串。
$dingpa = mysql_query($sql,$conn);//将$sql查询语句发送给数据库。
if (!$dingpa) {
    die("创建数据库失败:".mysql_error());
}
echo "创建成功";
mysql_close($conn);//关闭连接。
?>

運行後,
細說PHP結合mysql

有時候你會發現,上面的php檔案運行會顯示下圖所示的錯誤:

細說PHP結合mysql
#出現這個錯誤的原因是你透過$username = “sunwukong”; 使用者名稱存取資料庫時,而這個使用者在mysql中被建立時是沒有賦予權限的。

細說PHP結合mysql

3、刪除資料庫

刪除資料庫和創造資料庫一樣也是透過 mysql_query來實現。

細說PHP結合mysql

4、建立資料表資料

細說PHP結合mysql

#我們會建立一個名為「MyGuests」 的表,有5個欄位: “id”, “firstname”, “lastname”, “email” 和“reg_date”:
建立資料表MyGuests:

CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)

在資料表中的顯示如下:

1細說PHP結合mysql

這裡要注意物件瀏覽器顯示的表中的標題行,規定了資料的類型以及其它屬性。

細說PHP結合mysql
上圖是具體的資料圖表。
下面我們來看具體的程式碼:

在 PHP 早起版本中我們使用 MySQL 擴充功能。但該擴展在 2012 年開始不建議使用。取而代之的是mysqli擴充和PDO,個人使用的是mysqli擴充。 mysqli擴充是mysql擴充的延伸,使用起來兩者並沒有什麼差別,不過前者比後者更強大。下面使用的是mysqli面向過程(它還有一種物件導向的編碼方式)的編碼方式操作mysql,大家可以比較一下它同上面的mysql擴充編碼方式的差別。

1細說PHP結合mysql

1細說PHP結合mysql

AUTO INCREMENT - 設定 MySQL 欄位的值在新增記錄時每次自動增長 1
PRIMARY KEY - 設定資料表中每筆記錄的唯一識別。 通常列的 PRIMARY KEY 設定為 ID 數值,與 AUTO_INCREMENT 一起使用。每個表都應該有一個主鍵(本列為 “zhubajie_t” 列),主鍵必須包含唯一的值。 (這裡大家可能不太理解,不過到後面)

NOT NULL - 每一行都必須含有值(不能為空),null 值是不允許的。
 DEFAULT value - 設定預設值
 UNSIGNED - 使用無符號數值類型,0 及正數
 上面三種屬性同指定列的資料型別一樣都可以加入給列。 (這裡好好理解一下)。

5、刪除表格資料

細說PHP結合mysql

其實PHP結合mysql開發早就變成了一種習慣了,就像是男人和女人,當然也存在特別情況。

相關推薦:

#對mysql資料庫進行最佳化總結

以MySQL為例,帶你理解那些資料庫軍規

#

以上是細說PHP結合mysql的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn