淺談PHP的數(shù)據(jù)庫接口和技術(shù)
1、php支持哪些數(shù)據(jù)庫(擁有哪些數(shù)據(jù)庫接口)
Adabas D ,InterBase ,PostgreSQL ,dBase ,F(xiàn)rontBase ,SQLite ,Empress ,mSQL ,Solid ,F(xiàn)ilePro(只讀),Direct MS-SQL ,Sybase ,Hyperwave ,MySQL ,Velocis ,IBM DB2 ,ODBC ,Unix dbm ,informix ,Oracle(OCI7 和 OCI8),Ingres ,Ovrimos
以上數(shù)據(jù)庫都支持,簡言之,支持絕大多數(shù)主流數(shù)據(jù)庫
2、php原生操作mysql數(shù)據(jù)庫方法
<?php //數(shù)據(jù)庫操作 //1.導(dǎo)入數(shù)據(jù)庫 require("../../public/dbconfig.php"); //2.連接數(shù)據(jù)庫 $link=mysql_connect(HOST,USER,PASS) or die("數(shù)據(jù)庫連接失敗"); //3.選擇數(shù)據(jù)庫,設(shè)置字符集 mysql_select_db(DBNAME,$link); mysql_set_charset("utf8"); //4.編寫sql語句,發(fā)送sql語句到數(shù)據(jù)庫 $sql="select * from users"; $res=mysql_query($sql,$link); //5.解析結(jié)果集 while($user=mysql_fetch_assoc($res)){ echo "<tr align='center'>"; echo "<td>{$userstate[$user['state']]}</td>"; echo "<td>{$user['username']}</td>"; echo "<td>".date("Y-m-d",$user['addtime'])."</td>"; echo "<td> <a href='edit.php?id={$user['id']}'>修改</a> <a href='action.php?a=del&id={$user['id']}'>刪除</a> </td>"; echo "</tr>"; } mysql_free_result($res); mysql_close($link); ?>
3、php的PDO概念
PDO即PHP數(shù)據(jù)對(duì)象,將數(shù)據(jù)作為對(duì)象來操作,提高了操作數(shù)據(jù)的安全性和便捷性,從PHP5.1版本開始支持,例如預(yù)處理語句(prepared statements)、綁定參數(shù)(bound parameters)、可滾動(dòng)游標(biāo)(scrollable cursors)、定位更新(positioned updates)以及 LOB。
DAO(Data Access Object) 數(shù)據(jù)訪問對(duì)象是一個(gè)面向?qū)ο?PDO)的數(shù)據(jù)庫接口,在很多PHP框架中通過對(duì)原生的PDO封裝形成安全便捷的數(shù)據(jù)處理接口方法,下例為YII中的DAO方法:
http://www.yii-china.com/doc/guide/db_dao.html
<?php> //在advanced\common\config\main-local.php的conponents中配置好db; //連接數(shù)據(jù)庫 $connection = Yii::$app->db; //編寫預(yù)處理查詢語句 $command = $connection->createCommand('SELECT * FROM post'); //執(zhí)行操作 $posts = $command->queryAll(); $post = $command->queryOne(); $titles = $command->queryColumn(); <?php>
4、活動(dòng)記錄Active Record
ActiveRecord是一種設(shè)計(jì)模式,他的直接目的不是為了操作數(shù)據(jù)庫的,而是一種數(shù)據(jù)模型,相對(duì)于DAO是數(shù)據(jù)的更高級(jí)抽象。它提供了一個(gè)面向?qū)ο蟮慕y(tǒng)一接口,
用以訪問數(shù)據(jù)庫中的數(shù)據(jù)。
使用AR更大的簡化代碼,減少了出錯(cuò)的可能,下例是YII中的AR操作方法
//數(shù)據(jù)表customer對(duì)象實(shí)例化 $customer = new Customer(); $customer->name = 'Qiang'; $customer->save(); // 一行新數(shù)據(jù)插入 customer 表
5、什么情況下使用DAO或AR了
復(fù)雜業(yè)務(wù)邏輯使用DOA, 反之用AR
以上這篇淺談PHP的數(shù)據(jù)庫接口和技術(shù)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
PHP不用遞歸實(shí)現(xiàn)無限分級(jí)的例子分享
這篇文章主要介紹了PHP不用遞歸實(shí)現(xiàn)無限分級(jí)的例子,實(shí)際上是一種思路,并用簡單的例子來說明,需要的朋友可以參考下2014-04-04PHP遞歸獲取目錄內(nèi)所有文件的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄狿HP遞歸獲取目錄內(nèi)所有文件的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11Laravel 5框架學(xué)習(xí)之表單驗(yàn)證
Laravel 通過 Validation 類讓您可以簡單、方便的驗(yàn)證數(shù)據(jù)正確性及查看相應(yīng)的驗(yàn)證錯(cuò)誤信息。如果是更復(fù)雜的驗(yàn)證場(chǎng)景,你可能需要?jiǎng)?chuàng)建一個(gè)"表單請(qǐng)求"。表單請(qǐng)求是一個(gè)自定義的請(qǐng)求類包含了一些驗(yàn)證的邏輯。你可以通過 Artisan 的命令行 make:request 來創(chuàng)建一個(gè)表單請(qǐng)求類2015-04-04php實(shí)現(xiàn)統(tǒng)計(jì)IP數(shù)及在線人數(shù)的示例代碼
這篇文章主要介紹了php實(shí)現(xiàn)統(tǒng)計(jì)IP數(shù)及在線人數(shù)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07淺析PHP中的 inet_pton 網(wǎng)絡(luò)函數(shù)
inet_pton是一個(gè)IP地址轉(zhuǎn)換函數(shù),可以在將IP地址在“點(diǎn)分十進(jìn)制”和“二進(jìn)制整數(shù)”之間轉(zhuǎn)換,這篇文章主要介紹了PHP inet_pton 網(wǎng)絡(luò)函數(shù),需要的朋友可以參考下2019-12-12PHP實(shí)現(xiàn)抽獎(jiǎng)功能實(shí)例代碼
這篇文章主要介紹了PHP如何實(shí)現(xiàn)抽獎(jiǎng)功能,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06php array_multisort 對(duì)數(shù)組進(jìn)行排序詳解及實(shí)例代碼
這篇文章主要介紹了php array_multisort 對(duì)數(shù)組進(jìn)行排序詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-10-10