Mac環(huán)境下php操作mysql數(shù)據(jù)庫(kù)的方法分享
Mac本地環(huán)境搭建
在Mac系統(tǒng),我們可以使用MAMP Pro 軟件來(lái)搭建本地服務(wù)器。安裝好這款軟件,網(wǎng)站的目錄在 /Applications/MAMP/htdocs 文件夾里,只需將文件放入該文件夾中,就可以通過(guò)http://localhost:8888來(lái)訪問(wèn)了,或者通過(guò)點(diǎn)擊如下紅色下劃線按鈕來(lái)快速訪問(wèn)站點(diǎn)。
mac系統(tǒng)下安裝php,兩行即可。
brew tap josegonzalez/homebrew-php brew install php54
安裝完后配置一下,你就可以使用phpstorm來(lái)愉快地編程啦。安裝的php路徑在/usr/local/bin/php
數(shù)據(jù)庫(kù)基本操作
1)用戶的 Web 瀏覽器發(fā)出 HTTP 請(qǐng)求,請(qǐng)求特定 Web 頁(yè)面。
2)Web服務(wù)器收到.php 的請(qǐng)求獲取該文件,并將它傳到 PHP 引擎,要求它處理。 3)PHP 引擎開(kāi)始解析腳本。 腳本中有一條連接數(shù)據(jù)庫(kù)的命令, 還有執(zhí)行一個(gè)查詢的令。命
PHP 打開(kāi)通向 MYSQL 數(shù)據(jù)庫(kù)的連接,發(fā)送適當(dāng)?shù)牟樵儭?br />
4)MYSQL 服務(wù)器接收數(shù)據(jù)庫(kù)查詢并處理。將結(jié)果返回到 PHP 引擎。
5)PHP 以你去哪干完成腳本運(yùn)行,通常,這包括將查詢結(jié)果格式化成 HTML 格式。然
后再輸出 HTML 返回到 Web 服務(wù)器。
6)Web服務(wù)器將 HTML 發(fā)送到瀏覽器。
MySQL 常用數(shù)據(jù)類型
整數(shù)型:TINYINT,SMALLINT,INT,BIGINT
浮點(diǎn)型:FLOA T,DOUB LE,DECIMAL(M,D)
字符型:CHAR,VARCHAR
日期型:DA TETIME,DA TE,TIMESTA MP
備注型:TINYTEXT,TEXT,LONGTEXT
MySQL 數(shù)據(jù)庫(kù)操作
1)顯示當(dāng)前存在的數(shù)據(jù)庫(kù)
>SHOWDATABASES;
2)選擇你所需要的數(shù)據(jù)庫(kù)
>USEguest;
3)查看當(dāng)前所選擇的數(shù)據(jù)庫(kù)
>SELECTDATABASE();
4)查看一張表的所有內(nèi)容
>SELECT*FROMguest; //可以先通過(guò)SHOWTABLES;來(lái)查看有多少?gòu)埍?
5)根據(jù)數(shù)據(jù)庫(kù)設(shè)置中文編碼
>SET NAMESgbk; //set names utf8;
6)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)
>CREATEDATABASEbook;
7)在數(shù)據(jù)庫(kù)里創(chuàng)建一張表
>CREATETABLEusers (
>username VARCHAR(20),//NOT NULL 設(shè)置不允許為空
>sex CHAR(1),
>birth DATETIME);
8)顯示表的結(jié)構(gòu)
>DESCIRBEusers;
9)給表插入一條數(shù)據(jù)
>INSERT INTO users (username,sex,birth) VALUES('jack','male',NOW());
PHP連接MySQL數(shù)據(jù)庫(kù)
連接數(shù)據(jù)庫(kù)
<?php header('COntent-Type:text/html;charset=utf-8');//設(shè)置頁(yè)面編碼,如果文件是gbk編碼,則charset也應(yīng)用gbk //@表示如果出錯(cuò)了,不要報(bào)錯(cuò),直接忽略 //參數(shù):服務(wù)器地址,用戶名和密碼 echo (!!@mysql_connect('localhost','root','*****'));//1 ?>
我們用雙感嘆號(hào)!!來(lái)將資源句柄轉(zhuǎn)換成布爾值,正確輸出1,錯(cuò)誤則輸出錯(cuò)誤信息。而如果前面加了@符號(hào),則忽略錯(cuò)誤信息,不會(huì)輸出錯(cuò)誤信息。
對(duì)于錯(cuò)誤消息的處理,我們可以使用mysql_error()函數(shù)來(lái)輸出錯(cuò)誤消息:
mysql_connect('localhost','root','****') or die('數(shù)據(jù)庫(kù)連接失敗,錯(cuò)誤信息:'.mysql_error());//對(duì)于密碼錯(cuò)誤的提示:數(shù)據(jù)庫(kù)連接失敗,錯(cuò)誤信息:Access denied for user 'root'@'localhost' (using password: YES)
die() 函數(shù)輸出一條消息,并退出當(dāng)前腳本。該函數(shù)是 exit() 函數(shù)的別名。
數(shù)據(jù)庫(kù)連接參數(shù),可以用常量來(lái)存儲(chǔ),這樣就不能被隨意修改,更加安全。
<meta charset="utf-8"> <?php //定義常量參數(shù) define('DB_HOST','localhost'); define('DB_USER','root'); define('DB_PWD','345823');//密碼 $connect = mysql_connect(DB_HOST,DB_USER,DB_PWD) or die('數(shù)據(jù)庫(kù)連接失敗,錯(cuò)誤信息:'.mysql_error()); echo $connect;//Resource id #2 ?>
值得注意的是,mysql_connect()括號(hào)內(nèi)的常量可不能加引號(hào),否則肯定出錯(cuò)。
選擇指定的數(shù)據(jù)庫(kù)
<?php define('DB_HOST','localhost'); define('DB_USER','root'); define('DB_PWD','345823');//密碼 define('DB_NAME','trigkit');//在phpmyadmin創(chuàng)建一個(gè)名為trigkit的數(shù)據(jù)庫(kù) //連接數(shù)據(jù)庫(kù) $connect = mysql_connect(DB_HOST,DB_USER,DB_PWD) or die('數(shù)據(jù)庫(kù)連接失敗,錯(cuò)誤信息:'.mysql_error()); //選擇指定數(shù)據(jù)庫(kù) mysql_select_db(DB_NAME,$connect) or die('數(shù)據(jù)庫(kù)連接錯(cuò)誤,錯(cuò)誤信息:'.mysql_error());//將表名字故意寫(xiě)錯(cuò),提示的錯(cuò)誤信息:數(shù)據(jù)庫(kù)連接錯(cuò)誤,錯(cuò)誤信息:Unknown database 'trigkt' ?>
通常不需要使用 mysql_close(),因?yàn)橐汛蜷_(kāi)的非持久連接會(huì)在腳本執(zhí)行完畢后自動(dòng)關(guān)閉
mysql_select_db(database,connection):選擇MySQL數(shù)據(jù)庫(kù)
獲取記錄集
<meta charset="utf-8"> <?php define('DB_HOST','localhost'); define('DB_USER','root'); define('DB_PWD','345823');//密碼 define('DB_NAME','trigkit'); //連接數(shù)據(jù)庫(kù) $connect = mysql_connect(DB_HOST,DB_USER,DB_PWD) or die('數(shù)據(jù)庫(kù)連接失敗,錯(cuò)誤信息:'.mysql_error()); //選擇指定數(shù)據(jù)庫(kù) mysql_select_db(DB_NAME,$connect) or die('數(shù)據(jù)表連接錯(cuò)誤,錯(cuò)誤信息:'.mysql_error()); //從數(shù)據(jù)庫(kù)里把表的數(shù)據(jù)提出來(lái)(獲取記錄集) $query = "SELECT * FROM class";//在trigkit數(shù)據(jù)庫(kù)中新建一張'表' $result = mysql_query($query) or die('SQL錯(cuò)誤,錯(cuò)誤信息:'.mysql_error());//故意將表名寫(xiě)錯(cuò):SQL錯(cuò)誤,錯(cuò)誤信息:Table 'trigkit.clas' doesn't exist ?>
mysql_query() 函數(shù)執(zhí)行一條 MySQL 查詢。
輸出數(shù)據(jù)
<meta charset="utf-8"> <?php define('DB_HOST','localhost'); define('DB_USER','root'); define('DB_PWD','345823');//密碼 define('DB_NAME','trigkit'); //連接數(shù)據(jù)庫(kù) $connect = mysql_connect(DB_HOST,DB_USER,DB_PWD) or die('數(shù)據(jù)庫(kù)連接失敗,錯(cuò)誤信息:'.mysql_error()); //選擇指定數(shù)據(jù)庫(kù),設(shè)置字符集 mysql_select_db(DB_NAME,$connect) or die('數(shù)據(jù)表連接錯(cuò)誤,錯(cuò)誤信息:'.mysql_error()); mysql_query('SET NAMES UTF8') or die('字符集設(shè)置出錯(cuò)'.mysql_error()); //從數(shù)據(jù)庫(kù)里把表的數(shù)據(jù)提出來(lái)(獲取記錄集) $query = "SELECT * FROM class"; $result = mysql_query($query) or die('SQL錯(cuò)誤,錯(cuò)誤信息:'.mysql_error()); print_r(mysql_fetch_array($result,MYSQL_ASSOC)); ?>
釋放結(jié)果集資源(僅需要在考慮到返回很大的結(jié)果集時(shí)會(huì)占用多少內(nèi)存時(shí)調(diào)用。)
<?php mysql_free_result($result); ?>
增刪改查
新增數(shù)據(jù)
<?php require 'index.php'; //新增數(shù)據(jù) $query = "INSERT INTO CLASS( name, email, point, regdate) VALUES ( '小明', 'xiaoming@163.com', 100, NOW() )"; @mysql_query($query) or die('新增錯(cuò)誤:'.mysql_error()); ?>
我們將上面的代碼保存為index.php,丟進(jìn)/Applications/MAMP/htdocs/ 文件夾。將上面的代碼保存為demo.php,放進(jìn)同樣的目錄內(nèi)。Mac系統(tǒng)獲取文件的路徑很簡(jiǎn)單,只需將文件拉進(jìn)終端即可顯示路徑名。
修改數(shù)據(jù)
我們假設(shè)要修改的數(shù)據(jù)的名稱是小明,id為2,將他的point分?jǐn)?shù)修改為80分,代碼如下:
<?php require 'index.php'; //修改數(shù)據(jù) $query = 'UPDATE class SET point=80 WHERE id=2'; @mysql_query($query); ?>
刪除數(shù)據(jù)
<?php require 'index.php'; //刪除數(shù)據(jù) $query = "DELETE FROM class WHERE id=2"; @mysql_query($query); mysql_close(); ?>
顯示數(shù)據(jù)
<?php require 'index.php'; //顯示數(shù)據(jù) $query = "SELECT id,name,email,regdate FROM class"; $result = mysql_query($query) or die('sql語(yǔ)句錯(cuò)誤:'.mysql_error()); print_r(mysql_fetch_array($result)); mysql_close(); ?>
或者顯示指定值數(shù)據(jù):
$data = mysql_fetch_array($result); echo $data['email'];//顯示email echo $data['name'];//顯示name
其他常用函數(shù)
mysql_fetch_lengths(): 取得結(jié)果集中每個(gè)輸出的長(zhǎng)度
mysql_field_name(): 取得結(jié)果中指定字段的字段名
mysql _fetch_row():從結(jié)果集中取得一行作為枚舉數(shù)組
mysql_fetch_assoc(): 從結(jié)果集中取得一行作為關(guān)聯(lián)數(shù)組
mysql_fetch_array(): 從結(jié)果集中取得一行作為關(guān)聯(lián)數(shù)組,或數(shù)字?jǐn)?shù)組,或二者兼有
mysql_num_rows(): 取得結(jié)果集中行的數(shù)目
mysql_num_fields():取得結(jié)果集中字段的數(shù)目
mysql_get_client_info(): 取得 MySQL 客戶端信息
mysql_get_host_info(): 取得 MySQL 主機(jī)信息
mysql_get_proto_info(): 取得 MySQL 協(xié)議信息
mysql_get_server_info(): 取得 MySQL 服務(wù)器信息
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
相關(guān)文章
PHP統(tǒng)計(jì)目錄下的文件總數(shù)及代碼行數(shù)(去除注釋及空行)
在開(kāi)發(fā)的時(shí)候,為了統(tǒng)計(jì)開(kāi)發(fā)出的代碼總行數(shù)及文件總數(shù),在沒(méi)有使用工具的時(shí)候,總是要去一個(gè)文件一個(gè)文件的查找,文件夾層次少還行,層次多的時(shí)候就累死人了2011-01-01PHP實(shí)現(xiàn)隨機(jī)調(diào)用圖片的示例代碼
在Web開(kāi)發(fā)中,使用PHP可以輕松實(shí)現(xiàn)各種有趣的功能,這篇文章主要為大家介紹了如何使用PHP來(lái)實(shí)現(xiàn)隨機(jī)調(diào)用圖片,感興趣的小伙伴可以了解一下2023-08-08PHP實(shí)現(xiàn)創(chuàng)建一個(gè)RPC服務(wù)操作示例
這篇文章主要介紹了PHP實(shí)現(xiàn)創(chuàng)建一個(gè)RPC服務(wù)操作,結(jié)合實(shí)例形式分析了PHP基于socket擴(kuò)展通信實(shí)現(xiàn)的RPC遠(yuǎn)程調(diào)用相關(guān)操作技巧,需要的朋友可以參考下2020-02-02php實(shí)現(xiàn)搜索一維數(shù)組元素并刪除二維數(shù)組對(duì)應(yīng)元素的方法
這篇文章主要介紹了php實(shí)現(xiàn)搜索一維數(shù)組元素并刪除二維數(shù)組對(duì)應(yīng)元素的方法,涉及php針對(duì)數(shù)組的定義、遍歷及刪除等操作技巧,需要的朋友可以參考下2015-07-07php使用json_decode后數(shù)字對(duì)象轉(zhuǎn)換成了科學(xué)計(jì)數(shù)法的解決方法
這篇文章主要介紹了php使用json_decode后數(shù)字對(duì)象轉(zhuǎn)換成了科學(xué)計(jì)數(shù)法的解決方法,涉及php操作json格式數(shù)據(jù)與數(shù)值轉(zhuǎn)換相關(guān)技巧,需要的朋友可以參考下2017-02-02PHP使用gearman進(jìn)行異步的郵件或短信發(fā)送操作詳解
這篇文章主要介紹了PHP使用gearman進(jìn)行異步的郵件或短信發(fā)送操作,總結(jié)分析了PHP基于gearman實(shí)現(xiàn)異步的郵件或短信發(fā)送相關(guān)配置、啟動(dòng)與操作注意事項(xiàng),需要的朋友可以參考下2020-02-02php中獲取關(guān)鍵詞及所屬來(lái)源搜索引擎名稱的代碼
有時(shí)候我們需要知道用戶通過(guò)哪個(gè)搜索引擎,通過(guò)拿個(gè)關(guān)鍵詞訪問(wèn)我們頁(yè)面,當(dāng)然js也可以實(shí)現(xiàn),但這里介紹下php的實(shí)現(xiàn)代碼。2011-02-02如何使用Casbin作為T(mén)hinkPHP的權(quán)限控制中間件
本文介紹了如何使用Casbin作為T(mén)hinkPHP的權(quán)限控制中間件,感興趣的同學(xué),可以參考下,理解其原理。2021-05-05