ODBC_CURSOR
語法:
string odbc_cursor(int
result_id);
說明:
取得一個 CURSORNAME,如果成功,會針對指定的 reuslt_id 傳回一個 CURSOR NAME。
範例
<HTML>
<HEAD>
<TITLE>ODBC FUNCTION TEST</TITLE>
</HEAD>
<BODY>
<h5>Test Cursor of deleting odd records and update even records c2char to 'handy'</h5>
<?
$conn=odbc_connect("PHP3TEST","SYSADM","");
if($conn)
{
Error_Reporting(0);
odbc_exec($conn,"drop table PHP3CURSOR");
odbc_exec($conn,"Create table PHP3CURSOR(c1Int int ,c2Char char(10))");
for($i=0;$i < 50;$i++)
{
$resexec=odbc_exec($conn,"insert into PHP3CURSOR values($i,'Test')");
ODBC_COMMIT($conn);
odbc_free_result($resexec);
}
$res=odbc_exec($conn,"select * from PHP3CURSOR");
echo
odbc_result_all($res),"rows";
odbc_free_result($res);
$res=odbc_exec($conn,"select * from PHP3CURSOR for update of c2Char");
$Cursor=odbc_cursor($res);
$CurUpdate=odbc_prepare($conn,"update PHP3CURSOR set c2Char=? where current of
$Cursor");
$CurDelete=odbc_prepare($conn,"Delete from PHP3CURSOR where current of $Cursor");
if($CurUpdate and $CurDelete)
{
while(odbc_fetch_row($res))
{
if(odbc_result($res,1)%2==0)
{
$str=chop(odbc_result($res,2)). "*";
$param[0]=$str;
odbc_execute($CurUpdate,$param);
}
else
{
odbc_execute($CurDelete);
}
odbc_commit($conn);
}
}
odbc_free_result($res);
$res=odbc_exec($conn,"select * from PHP3CURSOR");
echo
odbc_result_all($res),"rows";
odbc_free_result($res);
odbc_close($conn);
}
?>
</BODY>
</HTML>
ODBC_RESULT_ALL
語法:
int odbc_result_all(int result_id, string [format])
說明:
將目前的 RESULT SET 以 HTML 的表格形式顯示出來, odbc_result_all 會印出以 ODBC_EXEC 產生的 result id
中的所有資料。
範例:
<HTML>
<HEAD>
<TITAL><H1>TEST ODBC FUNCTION</H1></TITAL>
</HEAD>
<BODY>
<?
$CONN=ODBC_CONNECT("PHP3TEST","SYSADM","");
IF($CONN)
{
$RES=ODBC_EXEC($CONN,"SELECT * FROM TestODBC");
$STRRS=ODBC_RESULT_ALL($RES);
ECHO $STRRS;
ECHO "行資料";
}
?>
</BODY>
</HTML>
ODBC_FETCH_INTO
語法:
int odbc_fetch_into(int result_id, int [rownumber],
array result_array)
說明:
FETCH 一筆資料到一個 array 中,成功則傳回該筆資料在 result set 中的位置,失敗傳回 False。用來接收值的 array 必須使
用 PASSING BY REFERENCE 的方 式來接收傳回來的資料,array 的 index 從 0 開始。
範例:
<HTML>
<TITLE>
<HEAD>ODBC_fetch_into,ODBC_fetch_row</HEAD>
</TITLE>
<body>
<?
$Cn=ODBC_connect("PHP3TEST","SYSADM","");
if($Cn)
{
$Rs=odbc_exec($Cn,"select * from TestODBC");
$Colnum=odbc_num_fields($Rs);
while(odbc_fetch_into($Rs,&$Str))
{
for($i=0;$i<3;$i++)
{
echo $Str[$i] , "===== ";
}
echo "<P>";
}
}
?>
</body>
</HTML>
ODBC_FETCH_ROW
語法:
int odbc_fetch_row(int result_id, int [row_number])
說明:
一次 FETCH 一筆資料, ODBC_FETCH_ROW 可以 fetch 經 由 ODBC_DO 或 ODBC_EXEC 產生 result set
中的資料,如果沒有指 定 row_number, ODBC_FETCH_ROW 會 fetch 下一筆資料。
ODBC_RESULT
語法:
string odbc_result(int result_id, mixed field)
說明:
取得一筆資料中的某一個欄位值,mixed filed 可以是欄位 名稱或是欄位位置,欄位位置從 1 開始。
ODBC_RUM_ROWS
語法:
int odbc_num_rows(int result_id);
說明:
取得 RESULT SET 中共有幾筆資料,如果 SQL 為 insert、 update、delete,傳回的是影響的筆數,如果為 select,傳回的是
select 的筆數。大部份的 database,在 select 之後,無法使 用 ODBC_RUM_ROWS 來取得 select
的筆數。
ODBC_NUM_FIELDS
語法:
int odbc_num_fields(int result_id)
說明:
取得 RESULT SET 欄位的數目
DOBC_FIELD_NUM
語法:
int odbc_fieldnum(int result_id, string field_name)
說明:
傳回指定的欄位在 RESULT SET 中排序的位置
ODBC_FIELD_NAME
語法:
string odbc_fieldname(int result_id, int field_number)
說明:
傳回 RESULT SET 中第 field_number 個欄位的欄位名稱
ODBC_FIELD_TYPE
語法:
string odbc_field_type(int result_id, mixed field)
說明:
傳回 RESULT SET 中某一個欄位的欄位型態。
ODBC_FREE_RESULT
語法:
int odbc_free_result(int result_id)
說明:
關閉 RESULT SET
範例:
<HTML>
<head>
<title>hanly test</title>
</head>
<BODY>
<h5>DBMaker Test</h5>
<?
if(isset($dbuser))
{
$conn=odbc_connect($dsn,$dbuser,$dbpwd);
if (!$conn)
{
?>
<h5> Can't connect to Database</h5>
<?
}
else
{
?>
<h5>connect to database success!!!</h5>
<?
}
$res=ODBC_EXEC($conn,"select * from TestODBC");
$numfields=odbc_num_fields($res);
?>
<table>
<tr>
<td><h5>number of row</h5></td>
<?
for($jnum=1;$jnum<=$numfields;$jnum++)
{
$str=odbc_field_name($res,$jnum);
?>
<td><h5><?echo $str ?></h5></td>
<?
}
?>
</tr>
<tr>
<td>
<? for($jnum=1;$jnum<=$numfields;$jnum++)
{
$str=odbc_field_type($res,$jnum);
?></td>
<td><h5><?echo $str ?></h5></td>
<?
}
?></tr>
<tr>
<td>
<? for($jnum=1;$jnum<=$numfields;$jnum++)
{
$str=odbc_field_len($res,$jnum);
?> </td>
<td><h5><?echo $str ?></h5></td>
<?
}
?>
</tr>
<tr>
<?
$num=0;
while(odbc_fetch_row($res))
{
$num++;
?>
<td><h5>row <? echo $num;?></h5></td>
<?
for($k=1;$k<=$numfields;$k++)
{
$str=odbc_result($res,$k);
?>
<td><h5><? echo $str ?></h5></td>
<?
}
?></tr>
<?
}
?></table>
<?
odbc_free_result($res);
odbc_close($conn);
}
}
else
{
?>
<form action=ODBC_Result.php3 method=post>
<table border=0>
<tr><td>Database (DSN):</td>
<td><input type=text name=dsn value="PHP3TEST"></td>
</tr>
<tr><td>User:</td>
<td><input type=text name=dbuser></td>
</tr>
<tr><td>Password:</td>
<td><input type=password name=dbpwd></td>
</tr>
</table>
<input type=submit value=connect>
<?
}
?>
</BODY>
</HTML>