php連接資料庫的類
Ⅰ php利用pdo_odbc實現連接資料庫示例【基於ThinkPHP5.1搭建的項目】
本文實例講述了PHP利用pdo_odbc實現連接資料庫。分享給大家供大家參考,具體如下:
目的:從sql
server資料庫裡面把某個視圖文件調用出來,以鍵值對的方式顯示在頁面上。
利用pdo
odbc來實現PHP連接資料庫:
在PHP配置文件裡面開啟pdo_odbc.dll服務。重啟Apache伺服器。
在ThinkPHP5.1的項目中在模塊里添加config添加規定好的樣式資料庫:
代碼如下:
<?php
return
[
//
資料庫類型
'type'
=>
'sqlsrv',
//
伺服器地址
'hostname'
=>
'localhost',
//
資料庫名
'database'
=>
'mysql',
//
用戶名
'username'
=>
'sa',
//
密碼
'password'
=>
'123456',
//
埠
'hostport'
=>
'',
//
連接dsn
'dsn'
=>
'odbc:Driver={SQL
Server};Server=localhost;Database=mysql',
//
資料庫連接參數
'params'
=>
[],
//
資料庫編碼默認採用utf8
'charset'
=>
'utf8',
//
資料庫表前綴
'prefix'
=>
'',
//
資料庫調試模式
'debug'
=>
true,
//
資料庫部署方式:0
集中式(單一伺服器),1
分布式(主從伺服器)
'deploy'
=>
0,
//
資料庫讀寫是否分離
主從式有效
'rw_separate'
=>
false,
//
讀寫分離後
主伺服器數量
'master_num'
=>
1,
//
指定從伺服器序號
'slave_no'
=>
'',
//
是否嚴格檢查欄位是否存在
'fields_strict'
=>
true,
//
數據集返回類型
'resultset_type'
=>
'array',
//
自動寫入時間戳欄位
'auto_timestamp'
=>
false,
//
時間欄位取出後的默認時間格式
'datetime_format'
=>
'Y-m-d
H:i:s',
//
是否需要進行SQL性能分析
'sql_explain'
=>
false,
//
Builder類
'builder'
=>
'',
//
Query類
'query'
=>
'\\think\\db\\Query',
//
是否需要斷線重連
'break_reconnect'
=>
false,
//
斷線標識字元串
'break_match_str'
=>
[],
];
?>
在控制器controller裡面建一個控制文件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);
}
}
?>
最後調用入口文件即可訪問。
http://localhost:81/1111/tp5/public/index/test/zz
我的效果:
[{"111":"123","1112":"LLP","232":"1","ROW_NUMBER":"1"},{"111":"123","1112":"BB","232":"2","ROW_NUMBER":"2"}]
更多關於thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結》、《ThinkPHP常用方法總結》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend
FrameWork框架入門教程》及《PHP模板技術總結》。
希望本文所述對大家基於ThinkPHP框架的PHP程序設計有所幫助。
您可能感興趣的文章:ThinkPHP實現多資料庫連接的解決方法tp5(thinkPHP5)框架實現多資料庫查詢的方法ThinkPHP3.1新特性之多資料庫操作更加完善tp5(thinkPHP5)框架連接資料庫的方法示例PHP7使用ODBC連接SQL
Server2008
R2資料庫示例【基於thinkPHP5.1框架】thinkPHP5實現的查詢資料庫並返回json數據實例tp5(thinkPHP5)操作mongoDB資料庫的方法tp5(thinkPHP5)框架資料庫Db增刪改查常見操作總結thinkPHP5框架實現多資料庫連接,跨數據連接查詢操作示例
Ⅱ 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")
有許多初學者在遇到資料庫連接時總是會出問題,然而使用上面的驅動程序只要你的資料庫路徑選對了就不會出問題了。
Ⅲ 一個關於PHP連接mysql資料庫類的問題
如果你的程序只連接一個MYSQL,那麼mysql_connect的返回值是多餘的,系統會自動記錄,連接成功以後直接mysql_query($sql)就可以了。
Ⅳ 最好用的PHP資料庫操作類-ezSQL
ezSQL是一個非常好用的PHP資料庫操作類 著名的開源博客WordPress的資料庫操作就使用了ezSQL的MySQL部分 該資料庫操作類支持幾乎所有主流的資料庫 如 PHP PDO mySQL Oracle InterBase/FireBird PostgreSQL SQLite以及MS SQL等 ezSQL具有很強的調試功能 可以快速地查看SQL代碼的執行情況 使用ezSQL 可以為我們節省開發時間 簡化代碼並提高運行效率
ezSQL的優點就不用多說了 它小巧 快速 簡單 易用 並且開源 還有就是安全 你沒想到的細節它都為你考慮了 你只需要在你的腳本開頭包含相關的PHP文件 然後你就可以使用更好用的一套ezSQL函數來代替標準的PHP資料庫操作函數
下面是ezSQL中一些主要的函數
$db >get_results 從資料庫中讀取數據集
$db >get_row 從資料庫中讀取一行數據
$db >get_col 從資料庫中讀取一列指定的數據集
$db >get_var 從資料庫的數據集中讀取一個值
$db >query 執行一條SQL語句
$db >debug 列印最後執行的SQL語句及其返回的結果
$db >varmp 列印變數的結構及其內容
$db >select 選擇一個新資料庫
$db >get_col_info 獲取列的信息
$db >hide_errors 隱藏錯誤
$db >show_errors 顯示錯誤
ezSQL的使用方法很簡單 首先下載ezSQL源代碼 然後將ez_sql_core php文件和ez_sql_mysql php文件(這里以mySQL為例)放到與你的腳本文件相同的目錄下 然後將下面的代碼添加到你的腳本文件的最前面 這樣就可以正常使用ezSQL了
<?php// 包含ezSQL的核心文件include_once"ez_sql_core php";// 包含ezSQL具體的資料庫文件 這里以mySQL為例include_once"ez_sql_mysql php";// 初始化資料庫對象並建立資料庫連接$db=newezSQL_mysql( db_user db_password db_name db_host );?>
下面是ezSQL中一些主要函數的應用實例 這些代碼均來自於ezSQL的官方幫助文檔
實例一
// Select multiple records from the database and print them out $users=$db >get_results("SELECT name email FROM users");foreach($usersas$user){ // Access data using object syntax echo$user >name; echo$user >email;}
實例二
// Get one row from the database and print it out $user=$db >get_row("SELECT name email FROM users WHERE id = ");echo$user >name;echo$user >email;
實例三
// Get one variable from the database and print it out $var=$db >get_var("SELECT count(*) FROM users");echo$var;
實例四
// Insert into the database$db >query("INSERT INTO users (id name email) VALUES (NULL justin jv@foo )");
實例五
// Update the database$db >query("UPDATE users SET name = Justin WHERE id = )");
實例六
// Display last query and all associated results$db >debug();
實例七
// Display the structure and contents of any result(s) or any variable$results=$db >get_results("SELECT name email FROM users");$db >varmp($results);
實例八
// Get one column (based on column index) and print it out $names=$db >get_col("SELECT name email FROM users" )foreach($namesas$name){ echo$name;}
實例九
// Same as above 『but quicker』foreach($db >get_col("SELECT name email FROM users" )as$name){ echo$name;}
實例十
lishixin/Article/program/PHP/201311/21297
Ⅳ 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連接資料庫之PHP連接MYSQL資料庫代碼
PHP連接資料庫之PHP連接ACCESS資料庫代碼方法
PHP連接資料庫之PHP連接MS SQL資料庫代碼方法
安裝SQL伺服器並添加PHP的MSSQL擴展
使用以下代碼連接並測試
PHP連接資料庫之PHP連接Oracle資料庫
PHP提供了兩套函數與Oracle連接 分別是ORA_和OCI函數 其中ORA_函數略顯陳舊 OCI函數更新據說更好一些 兩者的使用語法幾乎相差無幾 你的PHP安裝選項應該可以支持兩者的使用
Ⅶ php連接資料庫關於PDO類和PDOStatement類的區別是什麼
這代表兩個不同的對象,看一下PDO::query()的定義:
public PDOStatement PDO::query ( string $statement )
可以知道query返回的結果是PDOStatement實例對象,那麼你至少可以知道PDOStatement可以用來操作結果集了。
看一下PDOStatement類有哪些方法:
http://php.net/manual/zh/class.pdostatement.php
發現有fetch,fetchAll等熟悉的功能,不是么?
然後再來看看PDO::prepare()方法
public PDOStatement PDO::prepare ( string $statement [, array $driver_options = array() ] )
它也是返回的PDOStatement,按照手冊的說法,PDOStatement代表一條預處理語句,並在該語句被執行後代表一個相關的結果集。
也就是說,如果你通過PDO::query()直接查詢,那麼返回的PDOStatement就表示一個結果集。
如果你通過PDO::prepare()查詢,實際上並未執行sql,而是得到一個預處理語句(PDOStatement),然後你調用PDOStatement::execute()方法真正執行。
Ⅷ php連接資料庫關於PDO類和PDOStatement類的區別是什麼
PDO可以兼容更多資料庫,同樣的語法訪問不同資料庫;
配置簡單,操作方便;
PDO對預處理語句的支持需要使用PDOStatement類對象,所以PDOStatement類只是PDO的一部分,這個類比較大作用是防止sql注入:
<?php
//...省略PDO連接資料庫代碼
$query="insertintocontactinfo(name,address,phone)values(:name,:address,:phone)";
$stmt=$dbh->prepare($query);//調用PDO對象中的prepare()方法
$stmt->blinparam(':name',$name);//將變數$name的引用綁定到准備好的查詢名字參數":name"中
$stmt->blinparam(':address',$address);
$stmt->blinparam(':phone',phone);
//...
?>
它是每個欄位值可以對應替換的,pdo可以對每個值進行處理,防止sql注入;
Ⅸ 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與資料庫連接
php鏈接mysql必備條件:
已安裝mysql資料庫;
檢查php環境是否已開啟mysql擴展(一般情況下是開啟的);
檢查方法:a.使用phpinfo();函數,看有沒有mysql項;b.打開php.ini文件,檢查php_mysql.dll前分號是否已取掉。
php鏈接代碼如下:
<?php
//設置編碼格式
header("Content-type:text/html;charset=utf-8");
//定義資料庫主機地址
$host="localhost";
//定義mysql資料庫登錄用戶名
$user="root";
//定義mysql資料庫登錄密碼
$pwd="";
//鏈接資料庫
$conn = mysql_connect($host,$user,$pwd);
//對連接進行判斷
if(!$conn){
die("資料庫連接失敗!".mysql_errno());
}else{
echo "資料庫連接成功!";
}
?>