PHP鏈接MySQL的常用擴(kuò)展函數(shù)
一、PHP連接數(shù)據(jù)庫(kù)及基本操作
MySQL采用的是'客戶(hù)機(jī)/服務(wù)器'架構(gòu)。使用PHP安裝的MySQL擴(kuò)展函數(shù),和直接使用客戶(hù)端軟件區(qū)訪問(wèn)MySQL數(shù)據(jù)庫(kù)服務(wù)器,原理一樣,都需要向MySQL管理系統(tǒng)發(fā)送SQL命令,然后將結(jié)果返回給用戶(hù)。
在PHP中,SQL分為兩類(lèi)(查看SQL語(yǔ)句分類(lèi)):一是有返回結(jié)果集的DQL語(yǔ)句,如select/desc 表名,執(zhí)行完畢之后,需要PHP處理結(jié)果集;二是沒(méi)有結(jié)果集的,如DML、DDL等,但是DML語(yǔ)句執(zhí)行成功后對(duì)數(shù)據(jù)表的記錄有影響。
<?php
//連接數(shù)據(jù)庫(kù),常用參數(shù)是主機(jī)名、用戶(hù)名和密碼
$link = mysql_connect('localhost','root','123456');
//判斷是否連接成功
if(!$link)
{
die('連接失敗'.mysql.error()); //連接成功返回資源標(biāo)識(shí)符,失敗返回false,mysql_error顯示錯(cuò)誤信息
}
//選擇數(shù)據(jù)庫(kù),mysql_error()只在調(diào)試中使用,再部署項(xiàng)目時(shí)就不要了,不然會(huì)泄露數(shù)據(jù)庫(kù)信息
mysql_select_db('test') or die('選擇數(shù)據(jù)庫(kù)失敗'.mysql_error());
//mysql_query()可以設(shè)置字符集和執(zhí)行SQL語(yǔ)句
mysql_query('set names utf-8');
$sql = 'insert into test(id,name) values("1","dwqs")';
$result = mysql_query($sql); //執(zhí)行sql返回結(jié)果集
//處理結(jié)果集,insert屬于DML,會(huì)對(duì)表的記錄有影響
if($result && mysql_affected_rows() > 0)
{
//mysql_insert_id()返回最后一條新紀(jì)錄的auto_increment值
echo '插入數(shù)據(jù)成功'.mysql_insert_id().'<br/>';
}
else
{
echo '插入數(shù)據(jù)失敗,錯(cuò)誤號(hào):'.mysql_errno().'錯(cuò)誤信息:'.mysql_error().'<br/>';
}
//關(guān)閉連接
mysql_close($link);
?>
二、PHP處理select查詢(xún)結(jié)果集
在PHP中執(zhí)行select語(yǔ)句返回一個(gè)結(jié)果集,可以用于對(duì)各個(gè)字段的處理
$result = mysql_query('select * from test');
//獲取記錄行的個(gè)數(shù)
$rows = mysql_num_rows($result);
//獲取字段個(gè)數(shù),即數(shù)據(jù)列
$cols = mysql_num_fields($result);
如果需要訪問(wèn)結(jié)果集中的數(shù)據(jù),可以使用下列四個(gè)函數(shù)中的一個(gè)(均以結(jié)果集資源符作為參數(shù),并自動(dòng)返回下一條記錄,在表末尾時(shí)返回false)
1、mysql_fetch_row():該函數(shù)將一條結(jié)果記錄返回并以一個(gè)普通的索引數(shù)據(jù)保存
2、mysql_fetch_assoc():從結(jié)果集中取得一行作為關(guān)聯(lián)數(shù)據(jù)保存
3、mysql_fetch_array():從結(jié)果集中取得一行作為關(guān)聯(lián)數(shù)組,或數(shù)字?jǐn)?shù)組,或二者兼有??梢允褂肕YSQL_ASSOC(關(guān)聯(lián)數(shù)組形式)、MYSQL_NUM(索引數(shù)組形式)和MYSQL_BOTH作為第二個(gè)參數(shù),指定返回的數(shù)據(jù)形態(tài)。
4、mysql_fetch_object():從結(jié)果集中取得一行作為對(duì)象,各個(gè)字段以對(duì)象方式訪問(wèn)。
建議:沒(méi)有特殊要求,不要使用mysql_fetch_array(),可以使用mysql_fetch_row()或者mysql_fetch_assoc()實(shí)現(xiàn)同樣的功能,且效率高。
另外也有三個(gè)與結(jié)果集相關(guān)的常用函數(shù)
5、mysql_data_seek(int $num):移動(dòng)內(nèi)部結(jié)果的指針,$num是想要設(shè)定的新的結(jié)果集指針的行數(shù)。
6、mysql_fetch_lengths(resource $result
):取得結(jié)果集中每個(gè)輸出的長(zhǎng)度
7、mysql_result(resource $result
, int $row[,mixed $field]
):返回 MySQL 結(jié)果集中一個(gè)單元的內(nèi)容。字段參數(shù)可以是字段的偏移量或者字段名,或者是字段表點(diǎn)字段名(tablename.fieldname)。如果給列起了別名('select foo as bar from…'),則用別名替代列名。調(diào)用 mysql_result()不能和其它處理結(jié)果集的函數(shù)混合調(diào)用。
- PHP 檢查擴(kuò)展庫(kù)或函數(shù)是否可用的代碼
- php smarty函數(shù)擴(kuò)展
- 編寫(xiě)自己的php擴(kuò)展函數(shù)
- 非常實(shí)用的php彈出錯(cuò)誤警告函數(shù)擴(kuò)展性強(qiáng)
- php實(shí)現(xiàn)jQuery擴(kuò)展函數(shù)
- PHP7擴(kuò)展開(kāi)發(fā)之基于函數(shù)方式使用lib庫(kù)的方法詳解
- PHP獲取和操作配置文件php.ini的幾個(gè)函數(shù)介紹
- PHP配置文件中最常用四個(gè)ini函數(shù)
- PHP最常用的ini函數(shù)分析 針對(duì)PHP.ini配置文件
- PHP 的幾個(gè)配置文件函數(shù)
- PHP parse_ini_file函數(shù)的應(yīng)用與擴(kuò)展操作示例
相關(guān)文章
Laravel的Auth驗(yàn)證Token驗(yàn)證使用自定義Redis的例子
今天小編就為大家分享一篇Laravel的Auth驗(yàn)證Token驗(yàn)證使用自定義Redis的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09Zend Framework數(shù)據(jù)庫(kù)操作方法實(shí)例總結(jié)
這篇文章主要介紹了Zend Framework數(shù)據(jù)庫(kù)操作方法,結(jié)合實(shí)例形式總結(jié)分析了Zend Framework數(shù)據(jù)庫(kù)操作相關(guān)函數(shù)使用技巧與注意事項(xiàng),需要的朋友可以參考下2016-12-12關(guān)于laravel 日志寫(xiě)入失敗問(wèn)題匯總
今天小編就為大家分享一篇關(guān)于laravel 日志寫(xiě)入失敗問(wèn)題匯總,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10基于ThinkPHP5框架使用QueryList爬取并存入mysql數(shù)據(jù)庫(kù)操作示例
這篇文章主要介紹了基于ThinkPHP5框架使用QueryList爬取并存入mysql數(shù)據(jù)庫(kù)操作,結(jié)合實(shí)例形式分析了thinkPHP5框架整合QueryList爬取數(shù)據(jù)存入mysql相關(guān)操作技巧及注意事項(xiàng),需要的朋友可以參考下2019-05-05