: : g_DBASE

Balíček obsahuje funkce pro připojení k databázi (zvládá MySQL, SyBASE a InterBase/Firebird).

Použití:
Po zakomentování jednoho z příkazů unset($ar_dbase) se balíček připojí k databázi po použití funkce MakeSpojeni(); . V celé následujicí aplikaci můžete pro komunikaci s databází používat příkazy SQLQuery, SQLNumRows a SQLFetchArray. A výhoda? Budeteli chtít přejít na jinou databázi, stačí zakomentovat a odkomentovat. Můžete balíček také krom rozšíření, upravit na možnost použití více databází najednou.
Pokud se při provádí dotazů objeví chyba, doplní se globální řetězec $ar_chyb a nastavi $GChyba na true. Co provedete s těmito chybami, je jen na Vás.

Kód:
g_dbase.php
<? /* DBASE */
$g_dbase_true = true;

// MySQL - array(server,user,password,dbase)

$ar_mysql = array("localhost","********","********","********");
// SyBase - array(server,user,password,dbase)

$ar_sybase = array("localhost","********","********","********");
// InterBase (FireBird) - array(server,user,password,charset)

$ar_ibase = array("localhost:********","SYSDBA","masterkey","WIN1250");

 //unset($ar_mysql);

 unset($ar_sybase);
 unset($ar_ibase);

// Connect to dbase using array of setting that exists

function MakeSpojeni() {
  // MySQL

  if (isset($GLOBALS['ar_mysql'])) {
    @$mysql_connection = mysql_connect($GLOBALS['ar_mysql'][0], $GLOBALS['ar_mysql'][1], $GLOBALS['ar_mysql'][2]);
    @mysql_query('set names cp1250');
    if (empty($mysql_connection) || $mysql_connection == false) return false;
    else {
      mysql_select_db($GLOBALS['ar_mysql'][3],$mysql_connection);
      $GLOBALS['lstmsg'] = mysql_error();
      $GLOBALS['mysql_connection'] = $mysql_connection;
      return true;
    }
  }
  // SyBASE

  if (isset($GLOBALS['ar_sybase'])) {
    @$sybase_connection = SyBASE_Connect($GLOBALS['ar_sybase'][0], $GLOBALS['ar_sybase'][1], $GLOBALS['ar_sybase'][2]);
    if (empty($sybase_connection) || $sybase_connection == false) return false;
    else {
      sybase_select_db($GLOBALS['ar_mysql'][3],$sybase_connection);
      $GLOBALS['lstmsg'] = Sybase_get_last_message();
      $GLOBALS['sybase_connection'] = $sybase_connection;
      return true;
    }
  }
  // IBase

  if (isset($GLOBALS['ar_ibase'])) {
    $ibase_connection = ibase_connect($GLOBALS['ar_ibase'][0], $GLOBALS['ar_ibase'][1], $GLOBALS['ar_ibase'][2],$GLOBALS['ar_ibase'][3]);
    if (empty($ibase_connection) || $ibase_connection == false) return false;
    else {
      $GLOBALS['lstmsg'] = ibase_errmsg();
      $GLOBALS['ibase_connection'] = $ibase_connection;
      return true;
    }
  }
  return false;
}

$ar_count_selectu = array();
$ar_chyb = array();
$GChyba = false;

// Do query command and return result link if possible. Elsewhere return false

function SQLQuery($select) {  
  // MySQL Query

  if (isset($GLOBALS['ar_mysql'])) {
    @$vys = MySQL_Query($select,$GLOBALS['mysql_connection']);
    if (mysql_error() != $GLOBALS['lstmsg']) {
      $merr = mysql_error();
      $GLOBALS['lstmsg'] = mysql_error();
    }
  }
  // SyBASE Query

  if (isset($GLOBALS['ar_sybase'])) {
    @$vys = SyBase_Query($select,$GLOBALS['sybase_connection']);
    if (Sybase_get_last_message() != $GLOBALS['lstmsg']) {
      $merr = Sybase_get_last_message();
      $GLOBALS['lstmsg'] = Sybase_get_last_message();
    }
  }  
  
  // IBase Query (with count if query is select)

  if (isset($GLOBALS['ar_ibase'])) {

    $countselect = preg_replace("/select(.*?)from(.*?)/","select count(*) from \\2",$select);
    if ($countselect != $select) {
      @$radcountselect=SQLFetchArray(ibase_query($GLOBALS["ibase_connection"],$countselect));
    }
    
    @$vys = ibase_query($GLOBALS["ibase_connection"],$select);
    if (ibase_errmsg() != $GLOBALS['lstmsg']) {
      $merr = ibase_errmsg();
      $GLOBALS['lstmsg'] = ibase_errmsg();
    } else
      if ($vys) {
        if (isset($radcountselect)) {
          $GLOBALS["ar_count_selectu"][$vys] = $radcountselect["COUNT"];
        } else {
          ibase_commit();
        }
      } 
    //else if (!isset($radcountselect)) ibase_commit();

    
  }
  if (isset($merr)) GCh($merr."\n\n".'['.$select.']');

  if (!empty($vys)) return $vys;	
  else return false;
}

function SQLNumRows($vysledek) {
  // MySQL number of rows

  if (isset($GLOBALS['ar_mysql'])) {
    @$num = mysql_num_rows($vysledek);
    if (mysql_error() != $GLOBALS['lstmsg']) {
      $merr = mysql_error();
      $GLOBALS['lstmsg'] = mysql_error();
    }
  }
  // SyBASE number of rows

  if (isset($GLOBALS['ar_sybase'])) {
    @$num = sybase_num_rows($vysledek);
    if (Sybase_get_last_message() != $GLOBALS['lstmsg']) {
      $merr = Sybase_get_last_message();
      $GLOBALS['lstmsg'] = Sybase_get_last_message();
    }
  }  
  // IBase number of rows from the array ar_count_selectu

  if (isset($GLOBALS['ar_ibase'])) {
    if (isset($GLOBALS["ar_count_selectu"][$vysledek]))
      $num = $GLOBALS["ar_count_selectu"][$vysledek];
    else
      $num = 0;
  }
  
  if (isset($merr)) GCh($merr);

  if (isset($num)) return $num;
  return false;
}

function SQLFetchArray($vysledek) {
  // MySQLL fetch Array

  if (isset($GLOBALS['ar_mysql'])) {
    @$row = MySQL_Fetch_Array($vysledek,MYSQL_ASSOC);
    if (mysql_error() != $GLOBALS['lstmsg']) {
      $merr = mysql_error();
      $GLOBALS['lstmsg'] = mysql_error();
    }
  }
  // SyBASE fetch Array

  if (isset($GLOBALS['ar_sybase'])) {
    @$row = SyBase_Fetch_Array($vysledek,$GLOBALS["sybase_connection"]);
    if (Sybase_get_last_message() != $GLOBALS['lstmsg']) {
      $merr = Sybase_get_last_message();
      $GLOBALS['lstmsg'] = Sybase_get_last_message();
    }
  }  
  // IBase fetch row with get_object_vars

  if (isset($GLOBALS['ar_ibase'])) {
    @$row = get_object_vars(ibase_fetch_object($vysledek,IBASE_TEXT));
    if (ibase_errmsg() != $GLOBALS['lstmsg']) {
      $merr = ibase_errmsg();
      $GLOBALS['lstmsg'] = ibase_errmsg();
    }
  }
  
  if (isset($merr)) GCh($merr);

  if (!empty($row)) return $row;
  return false;
}

function GCh($str) {
  $l = '\\';
  if (isset($GLOBALS['err_msg']))
    $GLOBALS['err_msg'][] = str_replace("
",'\n',str_replace("
",'\n',str_replace("\n",'\n',str_replace("'","$lom'",$str))));
}

?>