當前位置:首頁 » 數據倉庫 » php連接資料庫類
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

php連接資料庫類

發布時間: 2023-02-12 16:32:54

❶ PHP網站怎麼連接到資料庫

常規方式

常規方式就是按部就班的讀取文件了。其餘的話和上述方案一致。

// 讀取配置文件內容
$handle = fopen("filepath", "r"); $content = fread($handle, filesize("filepath"));123

PHP解析XML

上述兩種讀取文件,其實都是為了PHP解析XML來做准備的。關於PHP解析XML的方式的博客有很多。方式也有很多,像simplexml,XMLReader,DOM啦等等。但是對於比較小型的xml配置文件,simplexml就足夠了。

配置文件

<?xml version="1.0" encoding="UTF-8" ?><mysql>
<!-- 為防止出現意外,請按照此標准順序書寫.其實也無所謂了 -->
<host>localhost</host>
<user>root</user>
<password>123456</password>
<db>test</db>
<port>3306</port></mysql>12345678910

解析

<?php/**
* 作為解析XML配置文件必備工具
*/class XMLUtil {
public static $dbconfigpath = "./db.config.xml"; public static function getDBConfiguration() {
$dbconfig = array (); try { // 讀取配置文件內容
$handle = fopen(self::$dbconfigpath, "r"); $content = fread($handle, filesize(self::$dbconfigpath)); // 獲取xml文檔根節點,進而獲取相關的資料庫信息
$mysql = simplexml_load_string($content); // 將獲取到的xml節點信息賦值給關聯數組,方便接下來的方法調用
$dbconfig['host'] = $mysql->host; $dbconfig['user'] = $mysql->user; $dbconfig['password'] = $mysql->password; $dbconfig['db'] = $mysql->db; $dbconfig['port'] = $mysql->port; // 將配置信息以關聯數組的形式返回
return $dbconfig;
} catch ( Exception $e ) { throw new RuntimeException ( "<mark>讀取資料庫配置文件信息出錯!</mark><br />" );
} return $dbconfig;
}
}

資料庫連接池

對於PHP程序而言,優化永無止境。而資料庫連接池就在一定程度上起到了優化的作用。其使得對用戶的每一個請求而言,無需每次都像資料庫申請鏈接資源。而是通過已存在的資料庫連接池中的鏈接來返回,從時間上,效率上,都是一個大大的提升。

於是,這里簡單的模擬了一下資料庫連接池的實現。核心在於維護一個「池」。

從池子中取,用畢,歸還給池子。

<?php/**x
* PHP中的資料庫 工具類設計
* 郭璞
* 2016年12月23日
*
**/class DbHelper { private $dbconfig; private $dbpool; public $poolsize; public function __construct($poolsize = 20) { if (! file_exists ( "./utils.php" )) { throw new RuntimeException ( "<mark>utils.php文件丟失,無法進行配置文件的初始化操作!</mark><br />" );
}else {
require './utils.php';
} // 初始化 配置文件信息
$this->dbconfig = XMLUtil::getDBConfiguration (); // 准備好資料庫連接池「偽隊列」
$this->poolsize = $poolsize;
$this->dbpool = array (); for($index = 1; $index <= $this->poolsize; $index ++) {
$conn = mysqli_connect ( $this->dbconfig ['host'], $this->dbconfig ['user'], $this->dbconfig ['password'], $this->dbconfig ['db'] ) or die ( "<mark>連接資料庫失敗!</mark><br />" );
array_push ( $this->dbpool, $conn );
}
} /**
* 從資料庫連接池中獲取一個資料庫鏈接資源
*
* @throws ErrorException
* @return mixed
*/
public function getConn() { if (count ( $this->dbpool ) <= 0) { throw new ErrorException ( "<mark>資料庫連接池中已無鏈接資源,請稍後重試!</mark>" );
} else { return array_pop ( $this->dbpool );
}
} /**
* 將用完的資料庫鏈接資源放回到資料庫連接池
*
* @param unknown $conn
* @throws ErrorException
*/
public function release($conn) { if (count ( $this->dbpool ) >= $this->poolsize) { throw new ErrorException ( "<mark>資料庫連接池已滿</mark><br />" );
} else {
array_push ( $this->dbpool, $conn );
}
}
}

❷ php 連接資料庫類

我也剛剛學PHP,正在研究中,雖然你只給10分........
首先,將代碼保存到一個文件,如:mysql.class.php
其次,在一個常用的文件里調用:比如頭部文件header.php,因為我放在根目錄所以用下面方式導入其他文件:
require dirname(__FILE__) . 'include/config.php';
//導入類文件
require dirname(__FILE__) . 'include/mysql.class.php';
//定義一個類及初始化資料庫類
$db = new mysql($db_host, $db_user, $db_pass, $db_name);
$db_host = $db_user = $db_pass = $db_name = NULL;

然後,在test.php文件調用:
require_once dirname(__FILE__) . '/header.php';
使用方法:
$sql = "讀取表";
$res = $db->query($sql);
$info = array();//定義數組
while($row=$db->fetchRow($res))
{
$arr['id'] = $row['id'];
$arr['title'] = $row['title'];
$info[] = $arr;
}
可以在顯示的地方用:
foreach($info as $i)
{
echo $i['title']."<br />";
}
或是直接使用while

還用另一種調用方式:
$here_area = $db->getRow("select areaid,areaname from {$table}area where areaid='$areaid'");
$here[] = array('name'=>$here_area['areaname'],'id'=>$here_area['areaid']);

測試通過,因為我正在使用.....................................

config.php代碼:
<?php
$db_host = "localhost";
$db_name = "test";
$db_user = "root";
$db_pass = "";
$table = "mini_";
$charset = "gb2312";
$dbcharset = "gbk";
?>

mysql.class.php代碼:

<?php
class mysql
{
var $link = NULL;
//自動執行__construct php5類構建方法,如果PHP4和PHP5同時使用會自動使用PHP5的方法
function __construct($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $quiet = 0)
{
//自動執行時調用mysql函數
$this->mysql($dbhost, $dbuser, $dbpw, $dbname, $pconnect, $quiet);
}

//php4類構建方法,如果沒有 __construct 就自動執行此功能
function mysql($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $quiet = 0)
{
if ($quiet)
{
$this->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, $quiet);
}
else
{
$this->settings = array(
'dbhost' => $dbhost,
'dbuser' => $dbuser,
'dbpw' => $dbpw,
'dbname' => $dbname,
'charset' => $charset,
'pconnect' => $pconnect
);
}
}

function connect($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $quiet = 0)
{
global $dbcharset;
if ($pconnect)
{
if (!($this->link = @mysql_pconnect($dbhost, $dbuser, $dbpw)))
{
if (!$quiet)
{
$this->ErrorMsg("Can't pConnect MySQL Server($dbhost)!");
}
return false;
}
}
else
{
if (PHP_VERSION >= '4.2')
{
$this->link = @mysql_connect($dbhost, $dbuser, $dbpw, true);
}
else
{
$this->link = @mysql_connect($dbhost, $dbuser, $dbpw);
mt_srand((double)microtime() * 1000000);
}
if (!$this->link)
{
if (!$quiet)
{
$this->ErrorMsg("Can't Connect MySQL Server($dbhost)!");
}
return false;
}
}

$this->dbhash = md5($this->root_path . $dbhost . $dbuser . $dbpw . $dbname);
$this->version = mysql_get_server_info($this->link);
if ($this->version > '4.1')
{
if ($dbcharset != 'latin1')
{
mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary", $this->link);
}
if ($this->version > '5.0.1')
{
mysql_query("SET sql_mode=''", $this->link);
}
}

if ($dbname)
{
if (mysql_select_db($dbname, $this->link) === false )
{
if (!$quiet)
{
$this->ErrorMsg("Can't select MySQL database($dbname)!");
}

return false;
}
else
{
return true;
}
}
else
{
return true;
}
}

function query($sql, $type = '')
{
if ($this->link === NULL)
{
$this->connect($this->settings['dbhost'], $this->settings['dbuser'], $this->settings['dbpw'], $this->settings['dbname'], $this->settings['charset'], $this->settings['pconnect']);
$this->settings = array();
}
if ($this->queryCount++ <= 99)
{
$this->queryLog[] = $sql;
}
if ($this->queryTime == '')
{
if (PHP_VERSION >= '5.0.0')
{
$this->queryTime = microtime(true);
}
else
{
$this->queryTime = microtime();
}
}
if (!($query = mysql_query($sql, $this->link)) && $type != 'SILENT')
{
$this->error_message[]['message'] = 'MySQL Query Error';
$this->error_message[]['sql'] = $sql;
$this->error_message[]['error'] = mysql_error($this->link);
$this->error_message[]['errno'] = mysql_errno($this->link);

$this->ErrorMsg();

return false;
}
return $query;
}

function affected_rows()
{
return mysql_affected_rows($this->link);
}
function num_fields($query)
{
return mysql_num_fields($query);
}
function error()
{
return mysql_error($this->link);
}

function errno()
{
return mysql_errno($this->link);
}

function num_rows($query)
{
return mysql_num_rows($query);
}

function insert_id()
{
return mysql_insert_id($this->link);
}

function fetchRow($query)
{
return mysql_fetch_assoc($query);
}

function fetcharray($query)
{
return mysql_fetch_array($query);
}

function version()
{
return $this->version;
}

function close()
{
return mysql_close($this->link);
}

function ErrorMsg($message = '', $sql = '')
{
if ($message)
{
echo "$message\n\n";
}
else
{
echo "<b>MySQL server error report:";
print_r($this->error_message);
}

exit;
}

function getCol($sql)
{
$res = $this->query($sql);
if ($res !== false)
{
$arr = array();
while ($row = mysql_fetch_row($res))
{
$arr[] = $row[0];
}

return $arr;
}
else
{
return false;
}
}
function getOne($sql, $limited = false)
{
if ($limited == true)
{
$sql = trim($sql . ' LIMIT 1');
}

$res = $this->query($sql);
if ($res !== false)
{
$row = mysql_fetch_row($res);

if ($row !== false)
{
return $row[0];
}
else
{
return '';
}
}
else
{
return false;
}
}

function getAll($sql)
{
$res = $this->query($sql);
if ($res !== false)
{
$arr = array();
while ($row = mysql_fetch_assoc($res))
{
$arr[] = $row;
}

return $arr;
}
else
{
return false;
}
}

//使用: getRow($sql,true) 如果有true那值是 limit 1,讀取一條信息
function getRow($sql, $limited = false)
{
if ($limited == true)
{
$sql = trim($sql . ' LIMIT 1');
}

$res = $this->query($sql);
if ($res !== false)
{
return mysql_fetch_assoc($res);
}
else
{
return false;
}
}
}
?>

❸ PHP源代碼連接資料庫

資料庫有很多種類:mysql,oracle,mssql,db2等等。PHP操作資料庫的時候,要保證該類型資料庫的擴展已開啟。這里連接的資料庫以mysql為例:

<?php
//資料庫伺服器地址
$host="localhost";

//連接資料庫用戶名
$uname="root";

//連接資料庫密碼
$upass="";

//連接資料庫
$conn=mysql_connect($host,$uname,$upass);

//判斷連接
if(!$conn){
die("連接資料庫失敗!").mysql_errno();
}

//連接成功,其他操作省略
?>

❹ php怎麼連接access資料庫

(1)創建系統數據源,用PHP提供的ODBC函數。
(2)使用PHP的ODBC函數,但不創建數據源。

PHP使用ODBC連接Access 資料庫的方法。用$connstr="DRIVER= Microsoft Access Driver (*.mdb)來設置數據驅動,函數realpath()用來取得資料庫的相對路徑。利用該方法連接Access資料庫主要應用到PHP的 odbc_connect()函數,該函數聲明如下:
以下為引用的內容:
resourse odbc_connect( string dsn, string user, string password [, int cursor_type])
dsn:系統dsn名稱
user:資料庫伺服器某用戶名。
password:資料庫伺服器某用戶密碼。
cursor_type:游標類型。
代碼如下:
以下為引用的內容:
$connstr="DRIVER=Microsoft Access Driver (*.mdb);
DBQ=".realpath("bookinfo.mdb");
$connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC );
(3)使用微軟的ADODB資料庫驅動。
定義類COM來使用ADO方法操縱Access資料庫的。
該類詳細說明如下:
以下為引用的內容:
string com::com( string mole_name [, string server_name [, int codepage]])
mole_name:被請求組件的名字或class-id。
server_name:DCOM伺服器的名字。
Codepage:指定用於將PHP字元串轉換成UNICODE字元串的代碼頁,反之亦然。該參數的取值有CP_ACP、CP_MACCP、CP_OEMCP、CP_SYMBOL、CP_THREAD_ACP、CP_UTF7和CP_UTF8。
PHP利用com類並使用ADO方法訪問資料庫的代碼如下:
以下為引用的內容:
$conn = new com("ADODB.Connection");
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("bookinfo.mdb ");
$conn->Open($connstr);

❺ php連接資料庫的類,但是選擇資料庫的時候總是出錯,怎麼回事呢

構造函數錯咯

function__construct($host,$user,$pass,$database){
$this->host=$host;
$this->user=$user;
$this->pass=$pass;
$this->database=$database;
//echo$db;

$conn=mysql_connect($host,$user,$pass);
$db=mysql_select_db($this->database,$conn);
if($db){
echo"資料庫成功";
}else{
echo"資料庫失敗";
}
}
//給你改咯哈這個類
classregister{
private$host;//Thehostaddress
private$user;//Theuser
private$pass;//Thepassword
private$database;//Thedatabase
private$conn;

//Connectwiththedatabase
function__construct($host,$user,$pass,$database){
$this->host=$host;
$this->user=$user;
$this->pass=$pass;
$this->database=$database;
$conn=mysql_connect($host,$user,$pass)ordie("連接失敗!");
mysql_select_db($this->database,$conn)ordie("選擇資料庫失敗!");
$this->conn=$conn;
}
//Addauser
functionaddUser($data){
$dataObj=$data;//類里邊不要把變數寫得太死
$userInfo=json_decode($dataObj,true);//.
$username=$userInfo[0];
$password=$userInfo[1];
$repassword=$userInfo[2];

//Thesqltoaddthenewuser
@$sql_addUser=<<<EOF
insertintousersvalues("","$username","$password","$repassword");
EOF;
//var_mp($sql_addUser);break;
$result=mysql_query($sql_addUser,$this->conn);//指定連接,少些麻煩
//var_mp($result);break;
if($result){
echo1;
}else{
echo0;
}
}
}

❻ PHp如何連接資料庫

PHP鏈接資料庫有幾種方式

mysqli:

<?php
$servername="localhost";
$username="username";
$password="password";
//創建連接
$conn=newmysqli($servername,$username,$password);
//檢測連接
if($conn->connect_error){

die("連接失敗:".$conn->connect_error);
}
echo"連接成功";
?>

也可以使用PDO進行鏈接,前提是你必須在php.ini中開啟PDO:

<?php
$servername="localhost";
$username="username";
$password="password";

try{
$conn=newPDO("mysql:host=$servername;dbname=myDB",$username,$password);
echo"連接成功";
}
catch(PDOException$e)
{
echo$e->getMessage();
}
?>

建議使用PDO,功能更加強大,兼容各種資料庫

❼ php如何連接資料庫

$mysql_host="localhost";地址
$mysql_user="root";用戶名
$mysql_password="123";密碼
$mysql_database="001online";資料庫名
$conn=mysql_connect("$mysql_host","$mysql_user","$mysql_password");
if(!$conn){die("連接資料庫失敗:".mysql_error());}
mysql_select_db("$mysql_database",$conn);
mysql_query("setcharacterset'utf-8'");
mysql_query("setnames'utf-8'");

❽ PHP連接資料庫的幾種方法

用ASP連接各種資料庫的方法

一、ASP的對象存取資料庫方法
在ASP中,用來存取資料庫的對象統稱ADO(Active Data Objects),主要含有三種對象:Connection、Recordset 、Command
Connection:負責打開或連接數據
Recordset:負責存取數據表
Command:負責對資料庫執行行動查詢命令

二、連接各資料庫的驅動程序
連接各資料庫可以使用驅動程序,也可以使用數據源,不過我建議大家使用驅動程序,因為使用驅動程序非常方便、簡單,而使用數據源比較麻煩。

ODBC鏈接

適合資料庫類型 鏈接方式
access "Driver={microsoft access driver(*.mdb)};dbq=*.mdb;uid=admin;pwd=pass;"
dBase "Driver={microsoft dbase driver(*.dbf)};driverid=277;dbq=------------;"
Oracle "Driver={microsoft odbc for oracle};server=oraclesever.world;uid=admin;pwd=pass;"
MSSQL server "Driver={sql server};server=servername;database=dbname;uid=sa;pwd=pass;"
MS text "Driver={microsoft text driver(*.txt; *.csv)};dbq=-----;extensions=asc,csv,tab,txt;Persist SecurityInfo=false;"
Visual Foxpro "Driver={microsoft Visual Foxpro driver};sourcetype=DBC;sourceDB=*.dbc;Exclusive=No;"
MySQL "Driver={mysql};database=yourdatabase;uid=username;pwd=yourpassword;option=16386;"

OLEDB鏈接

適合的資料庫類型 鏈接方式
access "Provider=microsoft.jet.oledb.4.0;data source=your_database_path;user id=admin;password=pass;"
Oracle "Provider=OraOLEDB.Oracle;data source=dbname;user id=admin;password=pass;"
MS SQL Server "Provider=SQLOLEDB;data source=machinename;initial catalog=dbname;userid=sa;password=pass;"
MS text "Provider=microsof.jet.oledb.4.0;data source=your_path;Extended Properties′text;FMT=Delimited′"

而我們在一般情況下使用Access的資料庫比較多,在這里我建議大家連接Access資料庫使用下面的方法:

dim conn
set conn = server.createobject("adodb.connection")
conn.open = "provider=microsoft.jet.oledb.4.0;" & "data source = " & server.mappath("../db/bbs.mdb")

其中../db/bbs.mdb是你的資料庫存放的相對路徑!如果你的資料庫和ASP文件在同一目錄下,你只要這樣寫就可以了:

dim conn
set conn = server.createobject("adodb.connection")
conn.open = "provider=microsoft.jet.oledb.4.0;" & "data source = " & server.mappath("bbs.mdb")

有許多初學者在遇到資料庫連接時總是會出問題,然而使用上面的驅動程序只要你的資料庫路徑選對了就不會出問題了。

❾ dw中php怎麼連接mysql資料庫

首先打開DW,找到資料庫 選項卡:

這里是說,要完成連接資料庫操作 需要完成3步。那麼好,我們按步驟來做:

1、搞定創建站點

點擊藍色「站點」,彈出如下界面

站點命名

伺服器技術

編輯和測試文件存放位置,我們都在本地開發的,所以都在本地文件存在的位置就選你網站代碼的位置

定義瀏覽器打開預覽時url路徑,我這里是:http://localhost/news,注意這個路徑一定是可以訪問的路徑,就是在瀏覽器中能打開,否則4步的mysql會報連接不成功的操作

是否共享文件,這個是用來團隊開發的,點否

OK,下一步,完成,收功。這樣我們就完成了第一步,多出來一個√,增加了一個第四步。

2、搞定文檔類型

點擊藍色「文檔類型」,彈出如下界面

我們用的PHP,這里選擇PHP

完成,ok,第二步搞定。看又多出一個√。

3、搞定測試伺服器

點擊藍色「測試伺服器」,彈出如下界面

顯示我們第一步已經配置過的內容,直接點確認

完成,ok,但是並沒有按照預想多出一個√,沒事,繼續。

4、創建MYSQL連接

點擊上圖紅色箭頭指的+,出來Mysql連接,點擊,彈出如下界面

依次輸入你本地的信息,如我這里輸入的

然後點選取,彈出你的資料庫,選擇你的項目news所用的資料庫。確定,確定,ok,完成。

❿ php怎麼連接資料庫

1、資料庫連接第一步:配置mysql_connect()的參數
參數依次為:主機地址,用戶名,用戶密碼
2、mysql_pconnect()與mysql_connect()是不一樣的,pconnect顧名思義是持久連接
3、伺服器連接成功後,需要你選擇你需要用的資料庫
4、使用mydql_close()可以關閉資料庫連接資源,避免長時間佔用啟用資源消耗
5、mysqli_connect( )是mysql連接的另一種方式,參數形式一樣
6、首次使用mysql連接資料庫時,要記得使用輸入邏輯判斷,伺服器連接不成功或者選擇資料庫不成功,都要用Mysql_error或者mysql_errno來報錯
7、mysql的報錯,能夠幫助你准確地定位到錯誤發生在哪裡。