详解php与mysql的关系
通過本章你能夠學到什么?
1、對數據庫有一個更為直觀的了解。
2、利用php對數據庫進行連接、創建、修改、插入等簡單操作。
這篇文章的特點
1、在學習過程中碰到的很多問題,我都記錄下來,在這篇文章中給予了解決辦法。對于初學者而言能夠很好 節約他們的事件,不用再像我耗費大量的時間查找資料,解決問題。
2、有圖有真相,讓你能夠更容易理解。
3、絕不廢話。
第一部分:我的應用工具。
編輯器:sublime text3.
phpstudy:該程序包集成最新的Apache+PHP+MySQL+phpMyAdmin,一次性安裝,無須配置即可使用,是非常方便、好用的PHP調試環境。你不需要再單獨下載安裝php、mysql、appche,簡單方便。
首先認識以下phpstudy:
點擊上圖中的“MySQL管理器”,選擇MySQL-Front
出現如下界面:
打開之后就進入到正式的數據庫界面。
這里只是讓大家見識以下mysql,后面會講它的具體操作。
這一部分,我所出現的主要問題就是打開圖5中的localhost時出現連接不上mysql的問題,實在沒有辦法才選擇重裝phpstudy。
第二部分:理解php、apache 、mysql之間的關系。
有一位顧客在一家網店上 購買了一本書,網店店主收到需求后會去找廠家拿貨,店主拿到貨把貨發給顧客。
流程圖如下:
我們從上圖得知,顧客和店主并不直接交流,而是通過店主來交換數據,店主盡提供溝通服務。php、apache、數據庫三者之間的關系就像顧客、店主和廠家之間的關系。php需要某種數據,直接把請求發送給apache服務器,apache再把這種請求反饋給數據庫,數據庫取出響應的數據交給apache服務器,apache服務器再發送給php。
為什么php和數據庫不能直接溝通,非得通過apache呢?
打個比方:php和數據庫就好像兩個不同國籍的人,前者來自中國,后者來自美國,語言不通連溝通都成問題,更別說做生意了。恰好有這么一個人叫apache,即懂中文又懂英語,把php的需求翻譯成英文后告訴數據庫,數據庫取出相應的貨物交給apache ,apache再交給php。
php語言與數據庫數據不能相互識別,需要通過apache來進行轉換.
為什么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() 建立的持久連接。
連接數據庫:
數據庫不是每一個人都可以訪問,只有有權限的人才可以進行訪問。下面我來演示如果mysql-front工具來添加用戶。
添加新用戶后:
用新用戶進行訪問操作:
連接成功。
3、創建數據庫
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文件運行會顯示下圖所示的錯誤:
出現這個錯誤的原因是你通過$username = “sunwukong”; 用戶名訪問數據庫時,而這個用戶在mysql中被創建時是沒有賦予權限的。
4、刪除數據庫
刪除數據庫和創造數據庫一樣也是通過 mysql_query來實現。
5、創建數據表數據
我們將創建一個名為 “MyGuests” 的表,有 5 個列: “id”, “firstname”, “lastname”, “email” 和 “reg_date”:
創建數據表MyGuests:
在數據表中的顯示如下:
這里要注意對象瀏覽器顯示的表中的標題行,規定了數據的類型以及其它屬性。
上圖是具體的數據圖表。
下面我們來看具體的代碼:
在 PHP 早起版本中我們使用 MySQL 擴展。但該擴展在 2012 年開始不建議使用。取而代之的是mysqli擴展和PDO,個人使用的是mysqli擴展。mysqli擴展是mysql擴展的延伸,使用起來兩者并沒有什么差別,不過前者比后者更強大。下面使用的是mysqli面向過程(它還有一種面向對象的編碼方式)的編碼方式操作mysql,大家可以對比一下它同上面的mysql擴展編碼方式的區別。
AUTO INCREMENT - 設置 MySQL 字段的值在新增記錄時每次自動增長 1
PRIMARY KEY - 設置數據表中每條記錄的唯一標識。 通常列的 PRIMARY KEY 設置為 ID 數值,與 AUTO_INCREMENT 一起使用。每個表都應該有一個主鍵(本列為 “zhubajie_t” 列),主鍵必須包含唯一的值。(這里大家可能不太理解,不過到后面)
NOT NULL - 每一行都必須含有值(不能為空),null 值是不允許的。
DEFAULT value - 設置默認值
UNSIGNED - 使用無符號數值類型,0 及正數
上面三種屬性同指定列的數據類型一樣都可以添加給列。(這里好好理解一下)。
6、刪除表數據
總結
以上是生活随笔為你收集整理的详解php与mysql的关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑免费录屏软件有哪些?5款视频录制软件
- 下一篇: 互联网公司常用的黑话,你中招了多少?