擷取資料

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>
     
Copyright 2002 SYSCOM Computer Engineering Co. All rights reserved.