現(xiàn)在使用PDO鏈接數(shù)據(jù)庫(kù)的較多
創(chuàng)新互聯(lián)從2013年開(kāi)始,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元峨山縣做網(wǎng)站,已為上家服務(wù),為峨山縣各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話(huà):13518219792
連接是通過(guò)創(chuàng)建 PDO 基類(lèi)的實(shí)例而建立的。不管使用哪種驅(qū)動(dòng)程序,都是用 PDO 類(lèi)名。構(gòu)造函數(shù)接收用于指定數(shù)據(jù)庫(kù)源(所謂的 DSN)以及可能還包括用戶(hù)名和密碼(如果有的話(huà))的參數(shù)。
連接到 MySQL
?php
$dbh?=?new?PDO('mysql:host=localhost;dbname=test',?$user,?$pass);
?
如果有任何連接錯(cuò)誤,將拋出一個(gè) PDOException 異常對(duì)象。如果想處理錯(cuò)誤狀態(tài),可以捕獲異常,或者選擇留給通過(guò) set_exception_handler() 設(shè)置的應(yīng)用程序全局異常處理程序。
處理連接錯(cuò)誤
?php
try?{
$dbh?=?new?PDO('mysql:host=localhost;dbname=test',?$user,?$pass);
foreach($dbh-query('SELECT?*?from?FOO')?as?$row)?{
print_r($row);
}
$dbh?=?null;
}?catch?(PDOException?$e)?{
print?"Error!:?"?.?$e-getMessage()?.?"br/";
die();
}
?
如果應(yīng)用程序不在 PDO 構(gòu)造函數(shù)中捕獲異常,zend 引擎采取的默認(rèn)動(dòng)作是結(jié)束腳本并顯示一個(gè)回溯跟蹤,此回溯跟蹤可能泄漏完整的數(shù)據(jù)庫(kù)連接細(xì)節(jié),包括用戶(hù)名和密碼。因此有責(zé)任去顯式(通過(guò) catch 語(yǔ)句)或隱式(通過(guò) set_exception_handler() )地捕獲異常。
連接數(shù)據(jù)成功后,返回一個(gè) PDO 類(lèi)的實(shí)例給腳本,此連接在 PDO 對(duì)象的生存周期中保持活動(dòng)。要想關(guān)閉連接,需要銷(xiāo)毀對(duì)象以確保所有剩余到它的引用都被刪除,可以賦一個(gè) NULL 值給對(duì)象變量。如果不明確地這么做,PHP 在腳本結(jié)束時(shí)會(huì)自動(dòng)關(guān)閉連接。
關(guān)閉一個(gè)連接
?php
$dbh?=?new?PDO('mysql:host=localhost;dbname=test',?$user,?$pass);
//?在此使用連接
//?現(xiàn)在運(yùn)行完成,在此關(guān)閉連接
$dbh?=?null;
?
很多 web 應(yīng)用程序通過(guò)使用到數(shù)據(jù)庫(kù)服務(wù)的持久連接獲得好處。持久連接在腳本結(jié)束后不會(huì)被關(guān)閉,且被緩存,當(dāng)另一個(gè)使用相同憑證的腳本連接請(qǐng)求時(shí)被重用。持久連接緩存可以避免每次腳本需要與數(shù)據(jù)庫(kù)回話(huà)時(shí)建立一個(gè)新連接的開(kāi)銷(xiāo),從而讓 web 應(yīng)用程序更快。
本文實(shí)例講述了PHP利用pdo_odbc實(shí)現(xiàn)連接數(shù)據(jù)庫(kù)。分享給大家供大家參考,具體如下:
目的:從sql
server數(shù)據(jù)庫(kù)里面把某個(gè)視圖文件調(diào)用出來(lái),以鍵值對(duì)的方式顯示在頁(yè)面上。
利用pdo
odbc來(lái)實(shí)現(xiàn)PHP連接數(shù)據(jù)庫(kù):
在PHP配置文件里面開(kāi)啟pdo_odbc.dll服務(wù)。重啟Apache服務(wù)器。
在ThinkPHP5.1的項(xiàng)目中在模塊里添加config添加規(guī)定好的樣式數(shù)據(jù)庫(kù):
代碼如下:
?php
return
[
//
數(shù)據(jù)庫(kù)類(lèi)型
'type'
=
'sqlsrv',
//
服務(wù)器地址
'hostname'
=
'localhost',
//
數(shù)據(jù)庫(kù)名
'database'
=
'mysql',
//
用戶(hù)名
'username'
=
'sa',
//
密碼
'password'
=
'123456',
//
端口
'hostport'
=
'',
//
連接dsn
'dsn'
=
'odbc:Driver={SQL
Server};Server=localhost;Database=mysql',
//
數(shù)據(jù)庫(kù)連接參數(shù)
'params'
=
[],
//
數(shù)據(jù)庫(kù)編碼默認(rèn)采用utf8
'charset'
=
'utf8',
//
數(shù)據(jù)庫(kù)表前綴
'prefix'
=
'',
//
數(shù)據(jù)庫(kù)調(diào)試模式
'debug'
=
true,
//
數(shù)據(jù)庫(kù)部署方式:0
集中式(單一服務(wù)器),1
分布式(主從服務(wù)器)
'deploy'
=
0,
//
數(shù)據(jù)庫(kù)讀寫(xiě)是否分離
主從式有效
'rw_separate'
=
false,
//
讀寫(xiě)分離后
主服務(wù)器數(shù)量
'master_num'
=
1,
//
指定從服務(wù)器序號(hào)
'slave_no'
=
'',
//
是否嚴(yán)格檢查字段是否存在
'fields_strict'
=
true,
//
數(shù)據(jù)集返回類(lèi)型
'resultset_type'
=
'array',
//
自動(dòng)寫(xiě)入時(shí)間戳字段
'auto_timestamp'
=
false,
//
時(shí)間字段取出后的默認(rèn)時(shí)間格式
'datetime_format'
=
'Y-m-d
H:i:s',
//
是否需要進(jìn)行SQL性能分析
'sql_explain'
=
false,
//
Builder類(lèi)
'builder'
=
'',
//
Query類(lèi)
'query'
=
'\\think\\db\\Query',
//
是否需要斷線(xiàn)重連
'break_reconnect'
=
false,
//
斷線(xiàn)標(biāo)識(shí)字符串
'break_match_str'
=
[],
];
?
在控制器controller里面建一個(gè)控制文件Test.php
代碼如下:
?php
namespace
app\index\controller;
use
think\Db;
use
think\Controller;
class
Test
extends
Controller
{
public
function
zz(){
$data=Db::view('View_2')-select();
echo
json_encode($data);
}
}
?
最后調(diào)用入口文件即可訪(fǎng)問(wèn)。
我的效果:
[{"111":"123","1112":"LLP","232":"1","ROW_NUMBER":"1"},{"111":"123","1112":"BB","232":"2","ROW_NUMBER":"2"}]
更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《ThinkPHP入門(mén)教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門(mén)教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend
FrameWork框架入門(mén)教程》及《PHP模板技術(shù)總結(jié)》。
希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:ThinkPHP實(shí)現(xiàn)多數(shù)據(jù)庫(kù)連接的解決方法tp5(thinkPHP5)框架實(shí)現(xiàn)多數(shù)據(jù)庫(kù)查詢(xún)的方法ThinkPHP3.1新特性之多數(shù)據(jù)庫(kù)操作更加完善tp5(thinkPHP5)框架連接數(shù)據(jù)庫(kù)的方法示例PHP7使用ODBC連接SQL
Server2008
R2數(shù)據(jù)庫(kù)示例【基于thinkPHP5.1框架】thinkPHP5實(shí)現(xiàn)的查詢(xún)數(shù)據(jù)庫(kù)并返回json數(shù)據(jù)實(shí)例tp5(thinkPHP5)操作mongoDB數(shù)據(jù)庫(kù)的方法tp5(thinkPHP5)框架數(shù)據(jù)庫(kù)Db增刪改查常見(jiàn)操作總結(jié)thinkPHP5框架實(shí)現(xiàn)多數(shù)據(jù)庫(kù)連接,跨數(shù)據(jù)連接查詢(xún)操作示例
mysql可通過(guò)兩種方式通過(guò)php與web相連,一種通過(guò)php的mysql相關(guān)函數(shù),另一種通過(guò)php的odbc相關(guān)函數(shù)
相關(guān)函數(shù)如下:
mysql函數(shù)
mysql_affected_rows: 得到 mysql 最后操作影響的列數(shù)目。
mysql_close: 關(guān)閉 mysql 伺服器連線(xiàn)。
mysql_connect: 開(kāi)啟 mysql 伺服器連線(xiàn)。
mysql_create_db: 建立一個(gè) mysql 新資料庫(kù)。
mysql_data_seek: 移動(dòng)內(nèi)部傳回指標(biāo)。
mysql_db_query: 送查詢(xún)字串 (query) 到 mysql 資料庫(kù)。
mysql_drop_db: 移除資料庫(kù)。
mysql_errno: 傳回錯(cuò)誤訊息代碼。
mysql_error: 傳回錯(cuò)誤訊息。
mysql_fetch_array: 傳回陣列資料。
mysql_fetch_field: 取得欄位資訊。
mysql_fetch_lengths: 傳回單列各欄資料最大長(zhǎng)度。
mysql_fetch_object: 傳回物件資料。
mysql_fetch_row: 傳回單列的各欄位。
mysql_field_name: 傳回指定欄位的名稱(chēng)。
mysql_field_seek: 設(shè)定指標(biāo)到傳回值的某欄位。
mysql_field_table: 獲得目前欄位的資料表 (table) 名稱(chēng)。
mysql_field_type: 獲得目前欄位的型態(tài)。
mysql_field_flags: 獲得目前欄位的旗標(biāo)。
mysql_field_len: 獲得目前欄位的長(zhǎng)度。
mysql_free_result: 釋放傳回占用記憶體。
mysql_insert_id: 傳回最后一次使用 insert 指令的 id。
mysql_list_fields: 列出指定資料表的欄位 (field)。
mysql_list_dbs: 列出 mysql 伺服器可用的資料庫(kù) (database)。
mysql_list_tables: 列出指定資料庫(kù)的資料表 (table)。
mysql_num_fields: 取得傳回欄位的數(shù)目。
mysql_num_rows: 取得傳回列的數(shù)目。
mysql_pconnect: 開(kāi)啟 mysql 伺服器長(zhǎng)期連線(xiàn)。
mysql_query: 送出一個(gè) query 字串。
mysql_result: 取得查詢(xún) (query) 的結(jié)果。
mysql_select_db: 選擇一個(gè)資料庫(kù)。
mysql_tablename: 取得資料表名稱(chēng)。
odbc函數(shù)
使用odbc函數(shù)需安裝mysql odbc
odbc_autocommit: 開(kāi)關(guān)自動(dòng)更動(dòng)功能。
odbc_binmode: 設(shè)定二進(jìn)位資料處理方式。
odbc_close: 關(guān)閉 odbc 連結(jié)。
odbc_close_all: 關(guān)閉所有 odbc 連結(jié)。
odbc_commit: 更動(dòng) odbc 資料庫(kù)。
odbc_connect: 連結(jié)至 odbc 資料庫(kù)。
odbc_cursor: 取得游標(biāo)名。
odbc_do: 執(zhí)行 sql 指令。
odbc_exec: 執(zhí)行 sql 指令。
odbc_execute: 執(zhí)行預(yù)置 sql 指令。
odbc_fetch_into: 取得傳回的指定列。
odbc_fetch_row: 取得傳回一列。
odbc_field_name: 取得欄位名稱(chēng)。
odbc_field_type: 取得欄位資料形態(tài)。
odbc_field_len: 取得欄位資料長(zhǎng)度。
odbc_free_result: 釋出傳回資料的記憶體。
odbc_longreadlen: 設(shè)定傳回欄的最大值。
odbc_num_fields: 取得欄位數(shù)目。
odbc_pconnect: 長(zhǎng)期連結(jié)至 odbc 資料庫(kù)。
odbc_prepare: 預(yù)置 sql 指令。
odbc_num_rows: 取得傳回列數(shù)目。
odbc_result: 取得傳回資料。
odbc_result_all: 傳回 html 表格資料。
odbc_rollback: 撤消當(dāng)前交易。
odbc_setoption: 調(diào)整 odbc 設(shè)定。
外部語(yǔ)言只是與mysql庫(kù)里面的函數(shù)建立關(guān)系,并操作、獲取mysql庫(kù)返回值,,所以php連接mysql原理這個(gè)問(wèn)題沒(méi)有什么好答的,第二個(gè)問(wèn)題,在你的php網(wǎng)站要調(diào)用mysql數(shù)據(jù)庫(kù)內(nèi)容的地方,直接拿mysql函數(shù)庫(kù)中的mysql_conetct等函數(shù)來(lái)操作就行了。
文章名稱(chēng):php連接數(shù)據(jù)庫(kù)的目的,php連接數(shù)據(jù)庫(kù)的目的是什么
分享路徑:http://m.kartarina.com/article46/heishg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶(hù)體驗(yàn)、手機(jī)網(wǎng)站建設(shè)、ChatGPT、關(guān)鍵詞優(yōu)化、網(wǎng)站營(yíng)銷(xiāo)、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)