導航:首頁 > 編程語言 > mysqlodbcphp

mysqlodbcphp

發布時間:2023-01-28 17:37:55

A. php及資料庫

PHP調用三種資料庫的方法

本文比較詳細的介紹PHP調用MySQL、ODBC以及ORACLE資料庫。

MySQL是一個小巧靈瓏的資料庫伺服器軟體,對於中、小型應用系統是非常理想的。除了支持標準的ANSI SQL語句外,最重要的是,它還支持多種平台,而在Unix/Linux系統上,MySQL支持多線程運行方式,從而能獲得相當好的性能。它和PHP、 Apache一樣,是屬於開放源代碼軟體。其官方網站是:,上面提供Windows,Linux,Unix版本的源代碼的下載。

注意,MySQL訪問函數都需要有相應的許可權才能運行。常用的相關函數介紹如下:

(1)integer mysql_connect(主機,用戶名,口令);

此函數開始一個對指定主機上的MySQL資料庫的連接。若該資料庫位於一個不同地埠,則在主機名後加上冒號和埠號。所有參數均為可選的,預設情況下分別對應為本地主機、用戶正在執行的腳本名和空。主機可以是IP地址或域名。

在腳本執行結束時,連接被自動關閉,也可以用mysql_close提前關閉。

(2)boolean mysql_create_db(資料庫名);

創建一個資料庫。注意必須用一個帶有創建資料庫許可權的帳號打開連接。

(3)boolean mysql_select_db(資料庫名,連接號);

選擇預設資料庫。

(4)integer mysql_query(SQL語句,連接號);

對指定資料庫進行查詢。如果SQL語句是select,則返回一個結果號,否則返回的值可以不理會。如果失敗,返回false.。

(5)array mysql_fetch_array(結果號);

取出下一行,返回一個數組.可以用數字下標訪問(第一個欄位是下標 0),也可以用字元串下標訪問(即使用各欄位名)。如已取了最後一行,返回 false.。

(6)mysql_fetch_row(結果號);

返回一個矩陣代表結果集中一行的所有域。每次調用都會產生下一行,直到沒有行剩下時返回false。每個域值都由一個從零開始的偏移量索引。這是從查詢中獲取結果的最快方法。

(7)integer mysql_num_rows(結果號);

返回結果集中行的數目

(8)integer mysql_num_fields(結果號);

返回結果集中域的數目。

(9)integer mysql_list_dbs();

向伺服器查詢資料庫列表。它返回一個結果指針,該指針可用於mysql_fetch_row函數及類似函數。

(10)mysql_list_tables(資料庫名);

獲取一個指向指定資料庫的表單列表的結果指針。該結果指針可用於任何從結果集中獲取行的函數。

(11)mysql_close(連接號);

關閉對資料庫的連接。連接必須是由mysql_connect打開的。該函數的使用不是嚴格必需的,因為在腳本結束時,所有非永久鏈路都會被自動關閉。

(12)mysql_pconnect(主機,用戶名,口令);

與mysql_connect完全相似,但建立一個"永久連接",該連接一經建立永不關閉,即使使用mysql_close函數或程序執行完畢也不關閉.下一次試圖建立永久連接時,系統如發現已存在一個永久連接,則直接返回該連接號而不重新創建。

下面是一個調用MYSQL資料庫並分頁顯示的例子。

<?

$pagesize = 5; //每頁顯示5條記錄

$host="localhost";

$user="user";

$password="psw";

$dbname="book"; //所查詢的庫表名;

//連接MySQL資料庫

mysql_connect("$host","$user","$password") or die("無法連接MySQL資料庫伺服器!");

$db = mysql_select_db("$dbname") or die("無法連接資料庫!");

$sql = "select count(*) as total from pagetest";//生成查詢記錄數的SQL語句

$rst = mysql_query($sql) or die("無法執行SQL語句:$sql !"); //查詢記錄數

$row = mysql_fetch_array($rst) or die("沒有更多的記錄!"); /取出一條記錄

$rowcount = $row["total"];//取出記錄數

mysql_free_result($rst) or die("無法釋放result資源!"); //釋放result資源

$pagecount = bcdiv($rowcount+$pagesize-1,$pagesize,0);//算出總共有幾頁

if(!isset($pageno)) {

$pageno = 1; //在沒有設置pageno時,預設為顯示第1頁

}

if($pageno<1) {

$pageno = 1; //若pageno比1小,則把它設置為1

}

if($pageno>$pagecount) {

$pageno = $pagecount; //若pageno比總共的頁數大,則把它設置為最後一頁

}

if($pageno>0) {

$href = eregi_replace("%2f","/",urlencode($PHP_SELF));//把$PHP_SELF轉換為可以在URL上使用的字元串,這樣的話就可以處理中文目錄或中文文件名

if($pageno>1){//顯示上一頁的褳接

echo "<a href="" . $href . "?pageno=" . ($pageno-1) . "">上一頁</a> ";

}

else{

echo "上一頁";

}

for($i=1;$i<$pageno;$i++){

echo "<a href="" . $href . "?pageno=" . $i . "">" . $i . "</a> ";

}

echo $pageno . " ";

for($i++;$i<=$pagecount;$i++){

echo "<a href="" . $href . "?pageno=" . $i . "">" . $i . "</a> ";

}

if($pageno<$pagecount){//顯示下一頁的褳接

echo "<a href="" . $href . "?pageno=" . ($pageno+1) . "">下一頁</a> ";

}

else{

echo "下一頁 ";

}

$offset = ($pageno-1) * $pagesize;//算出本頁第一條記錄在整個表中的位置(第一條記錄為0)

$sql = "select * from pagetest LIMIT $offset,$pagesize";//生成查詢本頁數據的SQL語句

$rst = mysql_query($sql);//查詢本頁數據

$num_fields = mysql_num_fields($rst);//取得欄位總數

$i = 0;

while($i<$num_fields){//取得所有欄位的名字

$fields[$i] = mysql_field_name($rst,$i);//取得第i+1個欄位的名字

$i++;

}

echo "<table border="1" cellspacing="0" cellpadding="0">";//開始輸出表格

echo "<tr>";

reset($fields);

while(list(,$field_name)=each($fields)){//顯示欄位名稱

echo "<th>$field_name</th>";

}

echo "</tr>";

while($row=mysql_fetch_array($rst)){//顯示本頁數據

echo "<tr>";

reset($fields);

while(list(,$field_name)=each($fields)){//顯示每個欄位的值

$field_value = $row[$field_name];

if($field_value==""){

echo "<td> </td>";

}

else{

echo "<td>$field_value</td>";

}

}

echo "</tr>";

}

echo "</table>";//表格輸出結束

mysql_free_result($rst) or die("無法釋放result資源!");//釋放result資源

}

else{

echo "目前該表中沒有任何數據!";

}

mysql_close($server) or die("無法與伺服器斷開連接!");//斷開連接並釋放資源

?>

開放資料庫連接(ODBC)已成為一種與資料庫進行通信的工業標准。PHP也提供了標準的介面,使得PHP能調用Access,SQL SERVER等資料庫。其相關函數是:

(1)integer odbc_connect(string dsn, string user, string password)

連接到一個ODBC資料庫源名字上。

(2)integer odbc_exec(integer connection, string query)或 odbc_do(integer connection, string query)

在一個連接上執行查詢。

(3)boolean odbc_fetch_row(integer result, integer row)

從一個結果集中獲取一行數據。Row參數是可選的,若為空缺,則返回下一個有效行。在結果集中不再剩餘行時返回false。

(4)boolean odbc_close(integer connection)

關閉一個資料庫的連接。若在該連接上有打開的事務,則返回一個錯誤,而且連接不會被關閉。

最後,還是看個分頁的例子:

<?

//設定每頁顯示條數

$show_num = 10;

$spages = $pages;//避免$pages後期被改變

//定義連接

$dsn = "localhost";

$user = "sa";

$password = "";

//計算總記錄數

$rs_num = "select count(*) as id from bbs where zu='0' and lei='".$lei."'";

$conn_id = odbc_connect($dsn,$user,$password);

$rnum = odbc_exec($conn_id,$rs_num);

while(odbc_fetch_row($rnum)){

$total_rs = odbc_result($rnum,"id");//將總記錄數放入$total_rs變數

}

//計算與頁有關的條數

$nnn = $total_rs / $show_num;//計算總頁數

$hnnn = intval($nnn);//將總頁數取整

$cnnnn = $nnn - $hnnn;

//計算所需總頁數

switch ($cnnn){

case "0":

$hnnn++;

$nnn = $hnnn;//總頁數

break;

default :

$nnn = $hnnn;//總頁數

break;

};

if ($nnn == 0)$nnn++;

//計算頁面改變所需的條件

$fore = $pages;

$next = $pages;

$fore -= 1;

$next += 1;

if ($fore > 0) {

echo "<a>首頁</a>";

echo "<a>前頁</a>";

};

if ($pages < $nnn) {

echo "<a>後頁</a>";

echo "<a>尾頁</a>";

};

echo "共".$nnn."頁";

$query_string = "SELECT * FROM table where condition order by you wanted order";

$cur = odbc_exec($conn_id,$query_string);

//取到循環的頂部

$cnum = ($pages-1) * $show_num;//計算當前的記錄游標的位置

//空循環到顯示記錄游標處
if ($cnum != 0){

for ($i=0;$i<=$cnum;odbc_fetch_row($cur));

};

$i=1;

//顯示記錄

while(odbc_fetch_row($cur)){

echo ;

if ($i == $show_num){//在不滿頁數時跳出程序

break;

};

$i++;

};

//關閉連接

odbc_close($conn_id);

?>

Oracle(甲骨文)是世界上最為流行的關系資料庫。它是大公司推崇的工業化的強有力的引擎。我們先看看其相關的函數:

(1)integer ora_logon(string user , string password)

開始對一個Oracle資料庫伺服器的連接。

(2)integer ora_open(integer connection)

打開給出的連接的游標。

(3)integer ora_do(integer connection, string query)

在給出的連接上執行查詢。PHP生成一個指示器,解析查詢,並執行之。

(4)integer ora_parse(integer cursor, string query)

解析一個查詢並准備好執行。

(5)boolean ora_exec(integer cursor)

執行一個先前由ora_parse函數解析過的查詢。

(6)boolean ora_fetch(integer cursor)

此函數會使得一個執行過的查詢中的行被取到指示器中。這使得您可以調用ora_getcolumn函數。

(7)string ora_getcolumn(integer cursor, integer column)

返回當前的值。列由零開始的數字索引。

(8)boolean ora_logoff(integer connection)

斷開對資料庫伺服器的鏈接。

以下是向ORACLE資料庫插入數據的示常式序:

<html>

<head><title>向ORACLE資料庫中插入數據</title></head>

<body>

<form action="<?echo $PHP_SELF;?>" method="post">

<table border="1" cellspacing="0" cellpadding="0">

<tr>

<th>ID</th>

<th>name</th>

<th>Description</th>

</tr>

<tr>

<td><input type="text" name="name" maxlength="50" size="10"></td>

<td><input type="text" name="email" maxlength="255" size="30"></td>

<td><input type="text" name="Description" maxlength="255" size="50"></td>

</tr>

<tr align="center">

<td colspan="3"><input type="submit" value="提交"><input type="reset" value="重寫"></td>

</tr>

</table>

</form>

<?

//先設置兩個環境變數ORACLE_HOME,ORACLE_SID

putenv("ORACLE_HOME=/oracle/app/oracle/proct/8.0.4");

putenv("ORACLE_SID=ora8");

//設置網頁顯示中文

putenv("NLS_LANG=Simplified_Chinese.zhs16cgb231280");

if($connection=ora_logon("scott","tiger")) {

//庫表test有ID,name,Description三項

$sql = 'insert into test(ID,name,Description) values ';

$sql .= '('' . $ID . '','' . $name . '',''. $Description . '')';

if($cursor=ora_do($connect,$sql)) {

print("insert finished!");

}

$query = 'select * from test';

if($cursor=ora_do($connect,$query)) {

ora_fetch($cursor);

$content0=ora_getcolumn($cursor,0);

$content1=ora_getcolumn($cursor,1);

$content2=ora_getcolumn($cursor,2);

print("$content0");

print("$content1");

print("$content2");

ora_close($cursor);

}

ora_logoff($connection);

}

?>

</body>

</html>
通過PHP你可以輕松的連接到資料庫,請求數據並將其顯示在你的web站點中,甚至修改資料庫中的數據。 MySQL是一種很流行的資料庫,並且在互聯網中有許多有關PHP與MySQL的教程。MySQL是免費的,這一點也許就吸引了不少人。由於其廣泛應用, 我就不想在這里贅述MySQL的使用方法了。Oracle被大量在企業應用中採用,因此我們就利用Oracle來介紹PHP與資料庫的連接。我們當然不會 提及Oracle資料庫的設計原理,原因是這已經超出了我們的討論范圍。
PHP提供了兩套函數與Oracle連接,分別是ORA_和OCI函數。其中ORA_函數略顯陳舊。OCI函數更新據說更好一些。兩者的使用語法幾乎相差無幾。如前所述,你的PHP安裝選項應該可以支持兩者的使用。
想獲得更多有關在Microsoft Windows平台上安裝支持PHP3的Apache伺服器的知識以及更多有關Oracle資料庫的知識,請查閱以下URL:。
4.1 連接

if ($conn=Ora_Logon("user@TNSNAME","password"))
{
echo "SUCCESS ! Connected to database\n";
}
else
{
echo "Failed :-( Could not connect to database\n";
}
Ora_Logoff($conn);
phpinfo();
?>
以上代碼使用TNSNAME(在你的tnsnames.ora文件中指明)定義的Oracle資料庫名稱、用戶名稱和密碼連接資料庫。在成功連接的基礎上,ora_logon函數返回一個非零的連接ID並儲存在變數$conn中。

4.2 查詢

假設與資料庫已經連接就緒,下面我們就來實際的應用對資料庫的查詢。下面的代碼演示了一個連接並查詢的典型例子:
/*
* 連接資料庫並執行查詢
*/
function printoraerr($in_cur)
{
// 檢查Oracle是否出錯
// 如果存在錯誤則顯示
// 當指針被激活時每次請求Oracle後調用該函數
if(ora_errorcode($in_cur))
echo "Oracle code - ".ora_error($in_cur)."\n";
return;
}
/** 主程序 */
if (!($conn=ora_logon("user@TNSNAME","password")))
{
echo "Connection to database failed\n";
exit;
}
echo "Connected as connection - $conn
\n";
echo "Opening cursor ...
\n";
$cursor=ora_open($conn); printoraerr($cursor);
echo "Opened cursor - $cursor
\n";
$qry="select user,sysdate from al";
echo "Parsing the query $qry ...
\n";
ora_parse($cursor,$qry,0); printoraerr($cursor);
echo "Query parsed
\n";
echo "Executing cursor ...
\n";
ora_exec($cursor); printoraerr($cursor);
echo "Executed cursor
\n";
echo "Fetching cursor ...
\n";
while(ora_fetch($cursor))
{
$user=ora_getcolumn($cursor,0); printoraerr($cursor);
$sysdate=ora_getcolumn($cursor,1); printoraerr($cursor);
echo " row = $user, $sysdate
\n";
}
echo "Fetched all records
\n";
echo "Closing cursor ...
\n";
ora_close($cursor);
echo "Closed cursor
\n";
echo "Logging off from oracle...
\n";
ora_logoff($conn);
echo "Logged off from oracle
\n";
?>
(譯者註:以上代碼段缺少注釋,請讀者參考PHP Manual的Oracle資料庫函數部分)

4.3 顯示結果

以下代碼演示了怎樣查詢資料庫並將結果輸出:
function printoraerr($in_cur, $conn)
{
// 檢查Oracle是否出錯
// 如果存在錯誤則顯示
// 當指針被激活時每次請求Oracle後調用該函數
// If it encountered an error, we exit immediately
if(ora_errorcode($in_cur))
{
echo "Oracle code - ".ora_error($in_cur)."
n";
ora_logoff($conn);
exit;
}
return;
}

function exequery($w_qry,$conn)
{
$cursor=ora_open($conn); printoraerr($cursor,$conn);
ora_parse($cursor,$w_qry,0); printoraerr($cursor,$conn);
ora_exec($cursor); printoraerr($cursor,$conn);
$numrows=0;
$w_numcols=ora_numcols($cursor);
// 顯示頭部
echo "

\n";
for ($i=0;$i<$w_numcols;$i++)
{
$align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT";
echo "\t ".ora_columnname($cursor,$i)." \n";
}
echo "
\n";
while(ora_fetch($cursor))
{
echo " \n";
for ($i=0;$i<$w_numcols;$i++)
{
$align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT";
if(ora_columntype($cursor,$i)=="LONG")
echo " ".
ora_getcolumn($cursor,$i)."
\n";
else
echo " ".ora_getcolumn($cursor,$i)." \n";
printoraerr($cursor,$conn);
}
$numrows++;
echo "
\n";
}
if ($numrows==0)
echo " Query returned no records

\n";
else
{
echo " \n";
echo " Count \n";
echo " $numrows \n";
echo "
\n";
}
echo " \n";
ora_close($cursor);
return;
}

// 主程序
if(!($conn=ora_logon("user@SID","password")))
{
echo "Error: Cannot connect to database\n";
exit;
}
$qry="SELECT
deptno \"Dept\"
,empno \"Emp\"
,empnm \"Name\"
,salary \"Salary\"
FROM
employee
ORDER BY 1,2";
exequery($qry);
ora_logoff($conn);
?>
(譯者註:以上代碼段缺少注釋,請讀者參考PHP Manual的Oracle資料庫函數部分)

4.4 基於HTTP的Oracle登錄

將以下代碼加在PHP頁面代碼之前以確認Oracle登錄。注意你必須正確設定$ SID。
if(!isset($PHP_AUTH_USER))
{
Header("WWW-authenticate: basic realm=\"$SID\"");
Header("HTTP/1.0 401 Unauthorized");
$title="Login Instructions";
echo "

You are not authorized to enter the site

\n";
exit;
}
else
{
if (!($conn=ora_logon("$PHP_AUTH_USER@$SID",$PHP_AUTH_PW)))
{
Header("WWW-authenticate: basic realm=\"$SID\"");
Header("HTTP/1.0 401 Unauthorized");
$title="Login Instructions";
echo "

You are not authorised to enter the site

\n";
exit;
}
}
?>

B. PHP使用ODBC連接資料庫的方法

本文實例講述了PHP使用ODBC連接資料庫的方法。分享給大家供大家參考。具體實現方法如下:
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
1.0
Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml"
xml:lang="en"
lang="en">
<head>
<title>PHP
and
ODBC:
XHTML
Example
1</title>
<meta
http-equiv="Content-Type"
content="text/html;
charset=UTF-8"
/>
</head>
<body>
<?php
$conn
=
odbc_connect(
"DRIVER={MySQL
ODBC
3.51
Driver};Server=localhost;Database=phpodbcdb",
"username",
"password");
if
(!($conn))
{
echo
"<p>Connection
to
DB
via
ODBC
failed:
";
echo
odbc_errormsg
($conn
);
echo
"</p>\n";
}
$sql
=
"SELECT
1
as
test";
$rs
=
odbc_exec($conn,$sql);
echo
"<table><tr>";
echo
"<th>Test</th></tr>";
while
(odbc_fetch_row($rs))
{
$result
=
odbc_result($rs,"test");
echo
"<tr><td>$result</td></tr>";
}
odbc_close($conn);
echo
"</table>";
?>
</body>
</html>
希望本文所述對大家的php程序設計有所幫助。

C. PHP需要用到什麼軟體

PHP集成開發環境,有Zend Studio、Eclipse for PHP、PhpStorm等。

1、Zend Studio

Zend Studio是Zend Technologies公司開發的PHP語言集成開發環境(IDE)。除了有強大的PHP開發支持外也支持HTML、js、CSS,但只對PHP語言提供調試支持。

2、EclipsePHP Studio

EclipsePHP是一個大型PHP項目開發編譯器,基於Eclipse底層開發而來,並且集成了JDK,免除了安裝配置的麻煩,一次安裝即可使用,無需配置。

此編譯器為PHP編譯器,輔助PHP代碼的開發和調試,集成了代碼高亮,函數跟蹤,實時糾錯等功能。同時還增加了協作開發版本伺服器功能:SVN 、 CVS 。 內嵌瀏覽器可以在調試簡單代碼實時瀏覽。

3、PhpStorm

PhpStorm是JetBrains公司開發的一款商業的 PHP 集成開發工具,旨在提高用戶效率,可深刻理解用戶的編碼,提供智能代碼補全,快速導航以及即時錯誤檢查。


(3)mysqlodbcphp擴展閱讀

php的特點

一、開源性和免費性

由於PHP的解釋器的源代碼是公開的,所以安全系數較高的網站可以自己更改PHP的解釋程序。另外,PHP 運行環境的使用也是免費的。

二、快捷性

PHP是一種非常容易學習和使用的一門語言,它的語法特點類似於C語言,但又沒有C語言復雜的地址操作,而且又加入了面向對象的概念,再加上它具有簡潔的語法規則,使得它操作編輯非常簡單,實用性很強。

三、資料庫連接的廣泛性

PHP可以與很多主流的資料庫建立起連接,如MySQL、ODBC、Oracle等,PHP是利用編譯的不同函數與這些資料庫建立起連接的,PHPLIB就是常用的為一般事務提供的基庫。

四、面向過程和面向對象並用

在PHP語言的使用中,可以分別使用面向過程和面向對象, 而且可以將PHP面向過程和面向對象兩者一起混用,這是其它很多編程語言是做不到的。

D. php 用com組件連接MySql或ODBC的方法

你可以試試:

<?php
$conn=newcom("ADODB.Connection");
$connstr="Driver={MySQLODBC3.51Driver};Server=data.domain.com;Port=3306;Database=myDataBase;User=myUsername;Password=myPassword;Option=3;
$conn->Open($connstr);
$rs=newcom("ADODB.RecordSet");
$rs->Open("select*fromtable",$conn,1,1);
echo($rs->Fields(1)->value);
$rs=NULL;
?>

MySQLODBC3.51Driver為你安裝myodbc的版本號

閱讀全文

與mysqlodbcphp相關的資料

熱點內容
如何下載虎牙app 瀏覽:845
日語年號的演算法 瀏覽:953
dev裡面的編譯日誌咋調出來 瀏覽:298
php函數引用返回 瀏覽:814
文件夾和文件夾的創建 瀏覽:257
香港加密貨幣牌照 瀏覽:836
程序員鼓勵自己的代碼 瀏覽:393
計算機網路原理pdf 瀏覽:750
吃雞國際體驗服為什麼伺服器繁忙 瀏覽:92
php中sleep 瀏覽:488
vr怎麼看視頻演算法 瀏覽:84
手機app如何申報個人所得稅零申報 瀏覽:692
如何截獲手機app連接的ip 瀏覽:331
冰箱壓縮機是否需要電容 瀏覽:345
python列表每一行數據求和 瀏覽:274
自己有一台伺服器可以玩什麼 瀏覽:656
社會學波普諾pdf 瀏覽:584
解壓做食物的小視頻 瀏覽:758
pdf怎麼單獨設置文件夾 瀏覽:474
業務邏輯程序員 瀏覽:659