好像需要配置ORACLE的环境变量,具体是哪里变量我已经忘了:(

解决方案 »

  1.   

    问题的关键是本机装了9i得服务端和客户端。
    可是仍然不能加载oci.dll使用phoinfo()看不到oci8相关的信息,后来到OTN网站down了一个instansclient就可以了而事实上,如果本机装了9i得服务端和客户端。是不需要instansclient的,我看到我的环境变量PATH里面第一个就是ORACEL得BIN目录,并且也找到了OCI.DLL函数,但是APACHE启动的时候就是无法加载PHP_OCI8.DLL,如果把PATH里面加上instansclient的路径,就是可以正常启动的,能加载PHP_OCI8.DLL。
    我在想是不是我得ORACLE版本不好,导致BIN下的文件不能被加载,或者说我用的是盗版,总之如果使用BIN下的OCI.DLL就是不能,这个就是奇怪的地方了。
      

  2.   

    <?php
    echo "<pre>";
    $db = "";$c1 = oci_connect("scott", "tiger", $db);
    $c2 = oci_connect("scott", "tiger", $db);function create_table($conn)
    {
      $stmt = oci_parse($conn, "create table scott.hallo (test varchar2(64))");
      oci_execute($stmt);
      echo $conn . " created table\n\n";
    }function drop_table($conn)
    {
      $stmt = oci_parse($conn, "drop table scott.hallo");
      oci_execute($stmt);
      echo $conn . " dropped table\n\n";
    }function insert_data($conn)
    {
      $stmt = oci_parse($conn, "insert into scott.hallo
                values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
      oci_execute($stmt, OCI_DEFAULT);
      echo $conn . " inserted hallo\n\n";
    }function delete_data($conn)
    {
      $stmt = oci_parse($conn, "delete from scott.hallo");
      oci_execute($stmt, OCI_DEFAULT);
      echo $conn . " deleted hallo\n\n";
    }function commit($conn)
    {
      oci_commit($conn);
      echo $conn . " committed\n\n";
    }function rollback($conn)
    {
      oci_rollback($conn);
      echo $conn . " rollback\n\n";
    }function select_data($conn)
    {
      $stmt = oci_parse($conn, "select * from scott.hallo");
      oci_execute($stmt, OCI_DEFAULT);
      echo $conn."----selecting\n\n";
      while (oci_fetch($stmt)) {
        echo $conn . " [" . oci_result($stmt, "TEST") . "]\n\n";
      }
      echo $conn . "----done\n\n";
    }create_table($c1);
    insert_data($c1);   // Insert a row using c1
    insert_data($c2);   // Insert a row using c2select_data($c1);   // Results of both inserts are returned
    select_data($c2);rollback($c1);      // Rollback using c1select_data($c1);   // Both inserts have been rolled back
    select_data($c2);insert_data($c2);   // Insert a row using c2
    commit($c2);        // Commit using c2select_data($c1);   // Result of c2 insert is returneddelete_data($c1);   // Delete all rows in table using c1
    select_data($c1);   // No rows returned
    select_data($c2);   // No rows returned
    commit($c1);        // Commit using c1select_data($c1);   // No rows returned
    select_data($c2);   // No rows returneddrop_table($c1);
    echo "</pre>";
    ?>