ここから求めない:自主的にPHP先端開発フレームワークを開発する(11)
10309 ワード
フレーム全体で
往々にして私たちはデータベースの呼び出しをする必要があります.この時、私たちは拿来主義を採用しなければなりません(後でお客様が突然データベースを交換したとき、移植を容易にすることができます).汎用(仕様呼び出し方式)2.便利なシステム移植3.マルチデータベースの切り替えが容易4.サードパーティのクラスライブラリは十分優秀で、しばらく勉強しなくてもいいです.
サードパーティクラスライブラリadodb phpのバージョンの使用
コード(myDataBase.php)
functions.phpの下に増加したload_dbメソッド
テスト例:
往々にして私たちはデータベースの呼び出しをする必要があります.この時、私たちは拿来主義を採用しなければなりません(後でお客様が突然データベースを交換したとき、移植を容易にすることができます).汎用(仕様呼び出し方式)2.便利なシステム移植3.マルチデータベースの切り替えが容易4.サードパーティのクラスライブラリは十分優秀で、しばらく勉強しなくてもいいです.
サードパーティクラスライブラリadodb phpのバージョンの使用
コード(myDataBase.php)
<?php require("adodb.inc.php"); class myDataBase { // public $_dbAddr="localhost"; // IP public $_dbName="onethink"; // public $_dbUser="root"; // public $_dbPwd="root";// public $_db=false; // function myDataBase() // __construct { // connect $this->initConnect(); } function __destruct() // { if($this->_db && $this->_db->IsConnected()) { $this->_db->disconnect(); unset($this->_db); } } function initConnect() { //mysql //sqlserver oracle , $this->_db=NewADOConnection("mysqli");//php5 $this->_db->connect($this->_dbAddr,$this->_dbUser,$this->_dbPwd,$this->_dbName); $this->_db->Query("set names utf8"); // $this->_db->SetFetchMode(ADODB_FETCH_ASSOC); // key } function execForNothing($sql)// sql , { $this->_db->Execute($sql); } function execForArray($sql) { // sql , $result=$this->_db->Execute($sql); if($result) { $returnArray=array(); while(!$result->EOF) { $returnArray[]=$result->fields; $result->MoveNext(); } return $returnArray; } else return false; } function execForOne($sql) { // sql , $result=$this->_db->GetOne($sql); //adodb , return $result; } function execForTrac($sqllist,$resulttype) // { //$sqllist sql $type=array("none","string","array","int"); // if(!in_array($resulttype,$type)) return false; if(count($sqllist)==0) return false; $this->_db->BeginTrans(); // $sqlindex=0; $ret=false; foreach($sqllist as $sql) { if($sqlindex==(count($sqllist)-1)) // { if($resulttype=="none") { $this->_db->Execute($sql); } else if($resulttype=="array") { $ret=$this->execForArray($sql); } else if($resulttype=="int" || $resulttype=="string") { $ret=$this->execForOne($sql); } else { $ret=$this->execForArray($sql); } } else $this->_db->Execute($sql); $sqlindex++; } $this->_db->CommitTrans(); return $ret; } } ?>
functions.phpの下に増加したload_dbメソッド
<?php function load_db(){ $db_path=LKPHP_PATH.'/Libary/DataBase/myDataBase.php'; if(!class_exists('myDataBase')){ require($db_path); } return new MyDataBase(); } ?>
テスト例:
//
$db = load_db();
$newslist=$db->execForArray('select * from onethink_action');
header('Content-Type:text/html;charset=utf8');
foreach ($newslist as $value) {
echo ' :'.$value['title'].' :'.$value['remark'].'<br/>';
}