: : 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))));
}
?>