日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

详解php与mysql的关系

發(fā)布時(shí)間:2023/12/18 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详解php与mysql的关系 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

通過(guò)本章你能夠?qū)W到什么?
1、對(duì)數(shù)據(jù)庫(kù)有一個(gè)更為直觀的了解。
2、利用php對(duì)數(shù)據(jù)庫(kù)進(jìn)行連接、創(chuàng)建、修改、插入等簡(jiǎn)單操作。


這篇文章的特點(diǎn)
1、在學(xué)習(xí)過(guò)程中碰到的很多問(wèn)題,我都記錄下來(lái),在這篇文章中給予了解決辦法。對(duì)于初學(xué)者而言能夠很好 節(jié)約他們的事件,不用再像我耗費(fèi)大量的時(shí)間查找資料,解決問(wèn)題。
2、有圖有真相,讓你能夠更容易理解。
3、絕不廢話。


第一部分:我的應(yīng)用工具。

  編輯器:sublime text3.
  phpstudy:該程序包集成最新的Apache+PHP+MySQL+phpMyAdmin,一次性安裝,無(wú)須配置即可使用,是非常方便、好用的PHP調(diào)試環(huán)境。你不需要再單獨(dú)下載安裝php、mysql、appche,簡(jiǎn)單方便。
首先認(rèn)識(shí)以下phpstudy:


點(diǎn)擊上圖中的“MySQL管理器”,選擇MySQL-Front
出現(xiàn)如下界面:
打開(kāi)之后就進(jìn)入到正式的數(shù)據(jù)庫(kù)界面。

這里只是讓大家見(jiàn)識(shí)以下mysql,后面會(huì)講它的具體操作。

這一部分,我所出現(xiàn)的主要問(wèn)題就是打開(kāi)圖5中的localhost時(shí)出現(xiàn)連接不上mysql的問(wèn)題,實(shí)在沒(méi)有辦法才選擇重裝phpstudy。

第二部分:理解php、apache 、mysql之間的關(guān)系。

有一位顧客在一家網(wǎng)店上 購(gòu)買(mǎi)了一本書(shū),網(wǎng)店店主收到需求后會(huì)去找廠家拿貨,店主拿到貨把貨發(fā)給顧客。
流程圖如下:


我們從上圖得知,顧客和店主并不直接交流,而是通過(guò)店主來(lái)交換數(shù)據(jù),店主盡提供溝通服務(wù)。php、apache、數(shù)據(jù)庫(kù)三者之間的關(guān)系就像顧客、店主和廠家之間的關(guān)系。php需要某種數(shù)據(jù),直接把請(qǐng)求發(fā)送給apache服務(wù)器,apache再把這種請(qǐng)求反饋給數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)取出響應(yīng)的數(shù)據(jù)交給apache服務(wù)器,apache服務(wù)器再發(fā)送給php。
為什么php和數(shù)據(jù)庫(kù)不能直接溝通,非得通過(guò)apache呢?
打個(gè)比方:php和數(shù)據(jù)庫(kù)就好像兩個(gè)不同國(guó)籍的人,前者來(lái)自中國(guó),后者來(lái)自美國(guó),語(yǔ)言不通連溝通都成問(wèn)題,更別說(shuō)做生意了。恰好有這么一個(gè)人叫apache,即懂中文又懂英語(yǔ),把php的需求翻譯成英文后告訴數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)取出相應(yīng)的貨物交給apache ,apache再交給php。
    php語(yǔ)言與數(shù)據(jù)庫(kù)數(shù)據(jù)不能相互識(shí)別,需要通過(guò)apache來(lái)進(jìn)行轉(zhuǎn)換.
為什么apache不能即當(dāng)服務(wù)器,又做數(shù)據(jù)庫(kù),這樣少了一個(gè)環(huán)節(jié)不是更省事嗎?
這設(shè)計(jì)到一個(gè)分工合理性問(wèn)題。
如果把a(bǔ)pache和數(shù)據(jù)庫(kù)合并,就相當(dāng)于apache既當(dāng)?shù)曛饔之?dāng)廠家,會(huì)大大加深apache服務(wù)器工作量。數(shù)據(jù)少的時(shí)候apache還能夠承受,數(shù)據(jù)大的時(shí)候,apache還要負(fù)擔(dān)工廠倉(cāng)庫(kù)的運(yùn)輸和管理工作,最終效益說(shuō)不定還會(huì)大大降低,倒不如把倉(cāng)庫(kù)運(yùn)輸和管理的工作交給工廠來(lái)做。

第三部分:mysql數(shù)據(jù)庫(kù)(database)
世界上有很多中數(shù)據(jù)庫(kù),mysql是其中最流行的一種。
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB公司開(kāi)發(fā),目前屬于Oracle公司。MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。(mysql數(shù)據(jù)庫(kù)相當(dāng)于將商品分類后放到不同的倉(cāng)庫(kù),每一個(gè)倉(cāng)庫(kù)都是一個(gè)小數(shù)據(jù)庫(kù),而工廠是一個(gè)大數(shù)據(jù)庫(kù)。這樣方便存取貨物,如果不進(jìn)行分類存放,很明顯存儲(chǔ)效率會(huì)大大降低)。

RDBMS即關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(Relational Database Management System)的特點(diǎn):
1.數(shù)據(jù)以表格的形式出現(xiàn)
2.每行為各種記錄名稱
3.每列為記錄名稱所對(duì)應(yīng)的數(shù)據(jù)域
4.許多的行和列組成一張表單
5.若干的表單組成database

第三部分:利用php操作mysql數(shù)據(jù)庫(kù)

1.使用php腳本連接數(shù)據(jù)庫(kù)

PHP 提供了 mysql_connect() 函數(shù)來(lái)連接數(shù)據(jù)庫(kù)。該函數(shù)有5個(gè)參數(shù),一般我們只用到前面3個(gè)。

這里你也許會(huì)問(wèn),php可以連接數(shù)據(jù)庫(kù)那appache干什么去了。 這里說(shuō)明一下,apache是一個(gè)服務(wù)器,其構(gòu)筑了一個(gè)php和數(shù)據(jù)庫(kù)可以溝通的環(huán)境.php和數(shù)據(jù)庫(kù)這兩個(gè)講不同語(yǔ)言的人打電話,通過(guò)apache這個(gè)同聲翻譯系統(tǒng)進(jìn)行溝通

. server 規(guī)定要連接的服務(wù)器。可以包括端口號(hào),例如 “hostname:port”,或者到本地套接字的路徑,例如對(duì)于 localhost 的 “:/path/to/socket”。
如果 PHP 指令 mysql.default_host 未定義(默認(rèn)情況),則默認(rèn)值是 ‘localhost:3306’。
. user 用戶名。默認(rèn)值是服務(wù)器進(jìn)程所有者的用戶名。
. password 密碼。默認(rèn)值是空密碼。

php mysql_close 用來(lái)斷開(kāi)與mysql數(shù)據(jù)庫(kù)的聯(lián)系。一般情況下腳本運(yùn)行完后會(huì)自動(dòng)斷開(kāi)聯(lián)系,所以這句也可以不寫(xiě)。不過(guò), mysql_close() 不會(huì)關(guān)閉由 mysql_pconnect() 建立的持久連接。
連接數(shù)據(jù)庫(kù):

<?php header("content-type:text/html;charset=utf-8"); $servername = "127.0.0.1";//服務(wù)器主機(jī)地址 $username = "root";//訪問(wèn)數(shù)據(jù)庫(kù)的用戶名$password = "root";//訪問(wèn)數(shù)據(jù)庫(kù)的密碼//phpstudy的mysql有一個(gè)默認(rèn)用戶名(root)和密碼(root)// 創(chuàng)建連接 $conn = mysql_connect($servername, $username,$password);// 檢測(cè)連接 if (!$conn) {die("Connection failed: " . mysql_connect_error());//die()輸出一條消息,然后斷開(kāi) 連接。 } echo "連接成功"; mysql_close($conn);//關(guān)閉連接。 ?>

數(shù)據(jù)庫(kù)不是每一個(gè)人都可以訪問(wèn),只有有權(quán)限的人才可以進(jìn)行訪問(wèn)。下面我來(lái)演示如果mysql-front工具來(lái)添加用戶。


添加新用戶后:


用新用戶進(jìn)行訪問(wèn)操作:

<?php header("content-type:text/html;charset=utf-8"); $servername = "127.0.0.1";//服務(wù)器主機(jī)地址 $username = "sunwukong";//訪問(wèn)數(shù)據(jù)庫(kù)的用戶名$password = "jingubang";//訪問(wèn)數(shù)據(jù)庫(kù)的密碼//phpstudy的mysql有一個(gè)默認(rèn)用戶名(root)和密碼(root)// 創(chuàng)建連接 $conn = mysql_connect($servername, $username,$password);// 檢測(cè)連接 if (!$conn) {die("Connection failed: " . mysql_connect_error());//die()輸出一條消息,然后斷開(kāi)連接。 } echo "連接成功"; mysql_close($conn);//關(guān)閉連接。 ?>

連接成功。

3、創(chuàng)建數(shù)據(jù)庫(kù)

php利用mysql_query(sql,connection)來(lái)創(chuàng)建或者刪除數(shù)據(jù)庫(kù)。mysql_query()把搜索查詢的語(yǔ)句sql通過(guò)建立的連接connection發(fā)送給數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)讀取之后響應(yīng)相應(yīng)操作。

<?php header("content-type:text/html;charset=utf-8"); $servername = "127.0.0.1";//服務(wù)器主機(jī)地址 $username = "sunwukong";//訪問(wèn)數(shù)據(jù)庫(kù)的用戶名$password = "jingubang";//訪問(wèn)數(shù)據(jù)庫(kù)的密碼//phpstudy的mysql有一個(gè)默認(rèn)用戶名(root)和密碼(root)// 創(chuàng)建連接 $conn = mysql_connect($servername, $username,$password);// 檢測(cè)連接 if (!$conn) {die("Connection failed: " . mysql_connect_error());//die()輸出一條消息,然后斷開(kāi)連接。 } echo "連接成功"; echo "</br>"; $sql = "CREATE DATABASE zhubajie";//CREATE DATABASE是sql語(yǔ)言中創(chuàng)建數(shù)據(jù)庫(kù)的語(yǔ)句,這里是一個(gè)創(chuàng)建名為“zhubajie”的數(shù)據(jù)庫(kù)的字符串。 $dingpa = mysql_query($sql,$conn);//將$sql查詢語(yǔ)句發(fā)送給數(shù)據(jù)庫(kù)。 if (!$dingpa) {die("創(chuàng)建數(shù)據(jù)庫(kù)失敗:".mysql_error()); } echo "創(chuàng)建成功"; mysql_close($conn);//關(guān)閉連接。 ?>

運(yùn)行后,

有時(shí)候你會(huì)發(fā)現(xiàn),上面的php文件運(yùn)行會(huì)顯示下圖所示的錯(cuò)誤:


出現(xiàn)這個(gè)錯(cuò)誤的原因是你通過(guò)$username = “sunwukong”; 用戶名訪問(wèn)數(shù)據(jù)庫(kù)時(shí),而這個(gè)用戶在mysql中被創(chuàng)建時(shí)是沒(méi)有賦予權(quán)限的。

4、刪除數(shù)據(jù)庫(kù)

刪除數(shù)據(jù)庫(kù)和創(chuàng)造數(shù)據(jù)庫(kù)一樣也是通過(guò) mysql_query來(lái)實(shí)現(xiàn)。

5、創(chuàng)建數(shù)據(jù)表數(shù)據(jù)

我們將創(chuàng)建一個(gè)名為 “MyGuests” 的表,有 5 個(gè)列: “id”, “firstname”, “l(fā)astname”, “email” 和 “reg_date”:
創(chuàng)建數(shù)據(jù)表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 )

在數(shù)據(jù)表中的顯示如下:

這里要注意對(duì)象瀏覽器顯示的表中的標(biāo)題行,規(guī)定了數(shù)據(jù)的類型以及其它屬性。


上圖是具體的數(shù)據(jù)圖表。
下面我們來(lái)看具體的代碼:

在 PHP 早起版本中我們使用 MySQL 擴(kuò)展。但該擴(kuò)展在 2012 年開(kāi)始不建議使用。取而代之的是mysqli擴(kuò)展和PDO,個(gè)人使用的是mysqli擴(kuò)展。mysqli擴(kuò)展是mysql擴(kuò)展的延伸,使用起來(lái)兩者并沒(méi)有什么差別,不過(guò)前者比后者更強(qiáng)大。下面使用的是mysqli面向過(guò)程(它還有一種面向?qū)ο蟮木幋a方式)的編碼方式操作mysql,大家可以對(duì)比一下它同上面的mysql擴(kuò)展編碼方式的區(qū)別。

AUTO INCREMENT - 設(shè)置 MySQL 字段的值在新增記錄時(shí)每次自動(dòng)增長(zhǎng) 1
PRIMARY KEY - 設(shè)置數(shù)據(jù)表中每條記錄的唯一標(biāo)識(shí)。 通常列的 PRIMARY KEY 設(shè)置為 ID 數(shù)值,與 AUTO_INCREMENT 一起使用。每個(gè)表都應(yīng)該有一個(gè)主鍵(本列為 “zhubajie_t” 列),主鍵必須包含唯一的值。(這里大家可能不太理解,不過(guò)到后面)

NOT NULL - 每一行都必須含有值(不能為空),null 值是不允許的。
DEFAULT value - 設(shè)置默認(rèn)值
UNSIGNED - 使用無(wú)符號(hào)數(shù)值類型,0 及正數(shù)
上面三種屬性同指定列的數(shù)據(jù)類型一樣都可以添加給列。(這里好好理解一下)。

6、刪除表數(shù)據(jù)

總結(jié)

以上是生活随笔為你收集整理的详解php与mysql的关系的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。