數(shù)據(jù)庫有很多種類:mysql,oracle,mssql,db2等等。PHP操作數(shù)據(jù)庫的時(shí)候,要保證該類型數(shù)據(jù)庫的擴(kuò)展已開啟。這里連接的數(shù)據(jù)庫以mysql為例:
成都創(chuàng)新互聯(lián)公司專注于原平企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站開發(fā)。原平網(wǎng)站建設(shè)公司,為原平等地區(qū)提供建站服務(wù)。全流程定制制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
?php
//數(shù)據(jù)庫服務(wù)器地址
$host="localhost";?
//連接數(shù)據(jù)庫用戶名
$uname="root";?
//連接數(shù)據(jù)庫密碼
$upass="";?
//連接數(shù)據(jù)庫
$conn=mysql_connect($host,?$uname,$upass);
//判斷連接
if(!$conn){
die("連接數(shù)據(jù)庫失??!").mysql_errno();????
}
//連接成功,其他操作省略
?
PHP連接mysql使用mysql_connect函數(shù)即可進(jìn)行與mysql數(shù)據(jù)庫之間的通訊。如果連接成功,則返回一個(gè) MySQL 連接標(biāo)識(shí),失敗則返回 FALSE。示例如下:
?php
$host="localhost";//mysql主機(jī)地址
$user="root";?//mysql?登錄賬戶
$pwd="";?//mysql登錄密碼
//連接數(shù)據(jù)庫
$conn?=?mysql_connect($host,$user,$pwd);
//判斷
if?(!$conn)?{
die('連接數(shù)據(jù)庫失敗:?'?.?mysql_error());
}
echo?"mysql?連接成功!";
//其他代碼......
//?關(guān)閉mysql連接
mysql_close($conn);
?
可以先在php的探針試試能否連接得上。
無非是幾點(diǎn)問題沒弄清楚:
1、數(shù)據(jù)庫地址
2、數(shù)據(jù)庫用戶名、數(shù)據(jù)庫名
3、數(shù)據(jù)庫密碼
有的主機(jī)數(shù)據(jù)庫地址有特殊要求的,有的主機(jī)數(shù)據(jù)庫用戶名、數(shù)據(jù)庫名不一樣的。在這點(diǎn)上就要認(rèn)真查看主機(jī)給你的資料了。
1、檢查環(huán)境正常
使用mysql -u root -p 可以進(jìn)入MySQL操作界面
直接使用/usr/local/php5/bin/php /web/test.php執(zhí)行可以連上數(shù)據(jù)庫
2、打開hosts加入
復(fù)制代碼代碼如下:127.0.0.1 qttc
使用qttc當(dāng)主機(jī)連接也正常,唯獨(dú)就不認(rèn)localhost。
3、localhost連接方式不同導(dǎo)致
為了了解PHP連接數(shù)據(jù)庫時(shí),主機(jī)填寫localhost與其它的區(qū)別閱讀了大量資料,最后得知:
當(dāng)主機(jī)填寫為localhost時(shí)mysql會(huì)采用 unix domain socket連接
當(dāng)主機(jī)填寫為127.0.0.1時(shí)mysql會(huì)采用tcp方式連接
這是linux套接字網(wǎng)絡(luò)的特性,win平臺(tái)不會(huì)有這個(gè)問題
4、解決方法
在my.cnf的[mysql]區(qū)段里添加
復(fù)制代碼代碼如下:
protocol=tcp
保存重啟MySQL,問題解決!
(1)創(chuàng)建系統(tǒng)數(shù)據(jù)源,用PHP提供的ODBC函數(shù)。
(2)使用PHP的ODBC函數(shù),但不創(chuàng)建數(shù)據(jù)源。
PHP使用ODBC連接Access 數(shù)據(jù)庫的方法。用$connstr="DRIVER= Microsoft Access Driver (*.mdb)來設(shè)置數(shù)據(jù)驅(qū)動(dòng),函數(shù)realpath()用來取得數(shù)據(jù)庫的相對(duì)路徑。利用該方法連接Access數(shù)據(jù)庫主要應(yīng)用到PHP的 odbc_connect()函數(shù),該函數(shù)聲明如下:
以下為引用的內(nèi)容:
resourse odbc_connect( string dsn, string user, string password [, int cursor_type])
dsn:系統(tǒng)dsn名稱
user:數(shù)據(jù)庫服務(wù)器某用戶名。
password:數(shù)據(jù)庫服務(wù)器某用戶密碼。
cursor_type:游標(biāo)類型。
代碼如下:
以下為引用的內(nèi)容:
$connstr="DRIVER=Microsoft Access Driver (*.mdb);
DBQ=".realpath("bookinfo.mdb");
$connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC );
(3)使用微軟的ADODB數(shù)據(jù)庫驅(qū)動(dòng)。
定義類COM來使用ADO方法操縱Access數(shù)據(jù)庫的。
該類詳細(xì)說明如下:
以下為引用的內(nèi)容:
string com::com( string module_name [, string server_name [, int codepage]])
module_name:被請(qǐng)求組件的名字或class-id。
server_name:DCOM服務(wù)器的名字。
Codepage:指定用于將PHP字符串轉(zhuǎn)換成UNICODE字符串的代碼頁,反之亦然。該參數(shù)的取值有CP_ACP、CP_MACCP、CP_OEMCP、CP_SYMBOL、CP_THREAD_ACP、CP_UTF7和CP_UTF8。
PHP利用com類并使用ADO方法訪問數(shù)據(jù)庫的代碼如下:
以下為引用的內(nèi)容:
$conn = new com("ADODB.Connection");
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("bookinfo.mdb ");
$conn-Open($connstr);