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