Koneksi PHP ke Database

PHP sebagai bahasa pemrograman yang populer, mensuport hampir semua database yang sering digunakan di pasaran, mulai dari MS Access, MySQL, Oracle, SQL Server ,DB2, dan maish banyak lagi.

Sebagai contoh berikut contoh koneksi antara PHP dengan oracle.

Asumsi module oci8 sudah terload dengan sempurna diphp yang bisa di lihat di phpinfo
buat script berikut kemudian simpan dengan nama info.php dan simpan di DirectoryRoot

http://localhost/info.php

1
2

Berikut contoh koneksi ke oracle dari PHP

<?php
// Definisi Oracle Environment 
 
$db = ""; //Bisa dikosongkan jika mengkases lokal database
$db = "ORCL"; //Nama Alias sesuai dengan TNS
$db = "(DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = 
        (PROTOCOL = TCP)
        (HOST = IPSERVER_ORACLE)
        (PORT = PORT_DB_ORACLE)
      )
    )
    (CONNECT_DATA = 
      (SERVICE_NAME = SERVICE_NAME_ORACLE)
    )
  ) "; // Full Deskripsi String Koneksi
  /*
	IPSERVER_ORACLE : IP Server Oracle, misal localhost, 192.168.1.1 dll
	PORT_DB_ORACLE : Port Oracle Instance
	SERVICE_NAME_ORACLE : serviceName 
  */
 
  $username = "hr";  // Diisi dengan username oracle yang anda punya
  $password = "hr";  // password dari user yang dimasukkan
 
  $conn = null;
  $conn = oci_connect($username,$password,$db);
 
  if ($conn){
	echo "Koneksi Berhasil ..";
  }else{
	echo "Koneksi Gagal";
  }
 
?>

Create Tokenize function di Oracle

Fungsi tokenizer sering sekali digunakan , jiak kita menggunakan java fungsi itu akan relatif mudah di gunakan karena disudah disediakan oleh java, nah bagaimana kita melakukan fungsi tokenizer di oracle.
berikut ada sample procedure untuk melakukan tokenizer di oracle

The pl/sql Oracle version for the Tokenizer procedure

CREATE OR REPLACE PROCEDURE tokenizer (
         iStart     IN       NUMBER,
         sPattern   IN       VARCHAR2,
         sBuffer    IN       VARCHAR2,
         sResult    OUT      VARCHAR2,
         iNextPos   OUT      NUMBER
        )
AS
     nPos1   NUMBER;
     nPos2   NUMBER;
BEGIN
     nPos1 := INSTR (sBuffer, sPattern, iStart);
    IF nPos1 = 0
    THEN
            sResult := NULL;
    ELSE
           nPos2 := INSTR (sBuffer, sPattern, nPos1 + 1);
          IF nPos2 = 0
          THEN
                 sResult := RTRIM (LTRIM (SUBSTR (sBuffer, nPos1 + 1)));
                 iNextPos := nPos2;
          ELSE
                sResult := SUBSTR (sBuffer, nPos1 + 1, nPos2 - nPos1 - 1);
                iNextPos := nPos2;
          END IF;
     END IF;
END tokenizer;

untuk test nya gunakan script dibawah ini

– a Procedure to Test the Tokenizer

CREATE OR REPLACE PROCEDURE sp_test_tokenizer
AS
      sepr VARCHAR2(1);
      sbuf VARCHAR2(200);
      sres VARCHAR2(200);
      pos NUMBER;
      istart NUMBER;
BEGIN
 
      sbuf := ‘@0@11@222@3333@44444@555555@6666666@77777777@888888888?;
      sepr := ‘@’;
      istart := 1;
      tokenizer (istart ,sepr,sbuf,sres,pos);
      IF (pos &lt;&gt; 0) THEN
          dbms_output.put_line (sres);
      END IF;
     WHILE (pos &lt;&gt; 0)
     LOOP
             istart := pos;
             tokenizer (istart ,sepr,sbuf,sres,pos );
             dbms_output.put_line (sres);
     END LOOP;
END sp_test_tokenizer;
/

dari SQLPLUS

SQL&gt; SET serveroutput ON
SQL&gt;exec sp_test_tokenizer;

silakan mencoba semoga bermanfaat
<sumber dari oracle.com>

MD5 Function di Oracle

Suatu ketika saya ada keperluan menggunakan fungsi MD5 di oracle. karena mencari-cari fungsi built in di oracle tidak ketemu, atau mungkin tidak ada akhirnya saya memutuskan untuk membuat Java Store Procedure. Untuk mempelajari lebih detail langkah-langkah membuat java store procedure anda bisa melihat postingan sebelumnya Java Store Procedure .

Langkah pertama membuat fungsi md5 di java

import java.security.MessageDigest;
 
public class MD5 {
 
    public static String getMD5(String message) {
 
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            String md5string="";
            StringBuffer sb = new StringBuffer();
            byte buf[] = message.getBytes();
            byte[] md5 = md.digest(buf);
            System.out.println(message);
            for( int i = 0 ; i &lt; md5.length ; i++ ) {
                String tmpStr = "0"+Integer.toHexString( (0xff &amp; md5[i]));
                sb.append(tmpStr.substring(tmpStr.length()-2));
            }
            md5string = sb.toString();
            return (md5string);
        }
        catch (Exception e)
        {
            System.out.println(e);
            return "0";
        }
    }
}

Kemudian kita compile

#javac MD5.java

Jika tidak ada error akan menghasilkan MD5.class, kemudian kit aload ke oracle

 loadjava -resolve -user scott/tiger MD5.class

Publish fungsi Java Store Procedure dengan membuat interface di oracle :

CREATE OR REPLACE FUNCTION GetMD5(str in varchar) RETURN VARCHAR2
as LANGUAGE JAVA
NAME 'MD5.getMD5(java.lang.String) return java.lang.String';

kemudian kita coba

select GetMD5('gatotkaca') from dual;
 
GETMD5('gatotkaca')
============================
4495ca9b8bb44554754c5ed33a33fef9

selamat mencoba !!!

semua script yang ada pada halaman ini bisa anda download di sini

Java Store Procedure

Mulai dari Oracle versi 8i oracle menyediakan membuat Java Store Procedure didalam database. Java Store Procedure biasa digunakan untuk membangung fungsi-fungsi yang tidak disediakan di oracle atau utilitas yang mungkin lebih efisien dan mudah dikerjakan menggunakan pemrograman Java. Untuk mengetahui apakah database kita sudah bisa kita gunakan untuk membuat Java Store Procedure kita bis amengecek dengan sintak sebagai berikut :

 SQL> describe dbms_java

jika perintah diatas memberikan pesan error seperti :

ERROR:
  ORA-04043: object dbms_java does NOT exist

artinya Package DBMS_JAVA belum terinstall di database kita, solusinya kita harus menginstall package tersebut yang sudah disediakan oleh oracle

#sqlplus / AS sysdba
SQL>  
   @$ORACLE_HOME/javavm/install/initjvm.SQL;
   @$ORACLE_HOME/xdk/admin/initxml.SQL;
   @$ORACLE_HOME/xdk/admin/xmlja.SQL;
   @$ORACLE_HOME/javavm/install/init_jis.SQL $ORACLE_HOME;
   @$ORACLE_HOME/javavm/install/jisaephc.SQL $ORACLE_HOME;
   @$ORACLE_HOME/javavm/install/jisja.SQL $ORACLE_HOME;
   @$ORACLE_HOME/javavm/install/jisdr.SQL 2481 2482;
   @$ORACLE_HOME/jsp/install/initjsp.SQL;
   @$ORACLE_HOME/jsp/install/jspja.SQL;
   @$ORACLE_HOME/rdbms/admin/initjms.SQL;
   @$ORACLE_HOME/rdbms/admin/initrapi.SQL;
   @$ORACLE_HOME/rdbms/admin/initsoxx.SQL;
   @$ORACLE_HOME/rdbms/admin/initapcx.SQL;
   @$ORACLE_HOME/rdbms/admin/initcdc.SQL;
   @$ORACLE_HOME/rdbms/admin/initqsma.SQL;
   @$ORACLE_HOME/rdbms/admin/initsjty.SQL;
   @$ORACLE_HOME/rdbms/admin/initaqhp.SQL;

Jika semua environment sudah terinstall dan siap kita akan membuat Java Store Procedure, berikut langkah-langkahnya :

  1. Membuat Java Class
  2. Kita ingin membuat fungsi Hello World

            public class PrintHello{
                  public static String Print(String name) {
                          return "Hello My Name "+name;
                 }
           }
    </pre > 
     
    Compile Script diatas 
     
    <pre lang="java">
    javac PrintHello.java
  3. Load dan Resolve Java Class ke Oracle
  4. Java class sudah berhasil dihasilkan akan kia load masuk ke database dengan menggunakan utilitas yang sudah disediakan oleh oracle yaitu loadjava

    # loadjava
    loadjava: Usage: loadjava [-definer] [-encoding encoding] [-force] [-genmissing] [-genmissingjar jar] [-grant grants] [-help] [-nousage] [-noverify] [-oci8] [-order] [-resolve] [-resolver resolver] [-schema schema] [-synonym] [-thin] [-tableschema schema] [-user user/password@database] [-verbose] classes..jars..resources..properties...

    Untuk kasus diatas kita gunakan option sederhana seperti berikut :

    loadjava -user scott/tiger PrintHello.class
    
  5. Publish Java Class
  6. untuk setiap java class kita harus membuatkan fungsi atau procedure sesuai dengan definisi java class.

    SQL>
    CREATE OR REPLACE FUNCTION PrintHello(name in varchar2) RETURN VARCHAR2
    as LANGUAGE JAVA
    NAME 'PrintHello.Print(java.lang.String) return java.lang.String';

  7. Panggil Store Procedure
  8. Kita coba panggil hasil fungsi di oracle

    SQL> select PrintHello('Gatotkaca') from dual;