Source for file vmsql.postgres.php
Documentation is available at vmsql.postgres.php
* LIBRERIA SQL per PostgreSQL con gestione errori ed altre utility
* @subpackage DB-Libraries
* @author Mario Marcello Verona <marcelloverona@gmail.com>
* @copyright 2007 Mario Marcello Verona
* @license http://www.gnu.org/licenses/gpl.html GNU Public License
* @desc Esegue una query $sql
* @param resource $link_db
* @param bool $transazione
function vmsql_query($sql,$link_db,$transazione= false){
if($GLOBALS['DEBUG_SQL']) $GLOBALS['DEBUG_SQL_STRING'][] = $sql;
$resource = @pg_query($link_db,$sql) or vmsql_error($sql,pg_errormessage($link_db),$transazione,$link_db);
/* tracciamneto query lente
$fp=fopen("/mnt/win_c2/htdocs/tmp/query_lente.log","a");
fwrite($fp,str_replace("\n","",$sql)."\n");
else vmsql_error($sql,"Link al DB non disponibile",$link_db);
* Esegue una query $sql e restisce vero|falso a seconda dell'esito
* il secure_mode (di default) permette l'uso di sole query SELECT
* @param bool $secure_mode
function vmsql_try($sql,$link_db,$secure_mode= true){
// piccolo accorgimento per la sicurezza...
$sql= preg_replace("'([\W](UPDATE)|(DELETE)|(INSERT)[\W])|;'i","",$sql);
$resource = @pg_query($link_db,$sql);
* @desc Funzione di fetch_row
$RS= @pg_fetch_row($res);
* @desc Funzione di fetch_assoc
$RS= @pg_fetch_assoc($res);
* @desc Funzione di fetch_array
$RS= @pg_fetch_array($res);
* @desc Funzione di num_rows
return @pg_num_rows($res);
* @desc Funzione di insert ID che restituisce l'ultimo ID autoincrement inserito (Postgres)
$result= @pg_query($link, "SELECT last_value FROM {$tablename}_{$fieldname}_seq");
$arr = @pg_fetch_row($result,0);
if (isset ($arr[0])) return $arr[0];
* @desc Funzione affected rows
return @pg_affected_rows($query);
* @desc Funzione di num_fields
return @pg_num_fields($dbname);
#########################################################################################
# FUNZIONI DI ELABORAZIONE
* @return array (matrice)
* @desc Funzione utility di fetch_assoc che restituisce tutta la matrice dei risultati
* @desc restituisce una traslata della matrice partendo da indici numerici
for($i= 0;$i< count($matrix);$i++ ){
for($j= 0;$j< count($keys);$j++ ) $rev[$keys[$j]][$i] = $matrix[$i][$keys[$j]];
* @desc Funzione utility di fetch_row che restituisce tutta la matrice dei risultati
* Funzione che recupera le informazioni sui campi di una tabella data
* @param resource $link_db
$res = vmsql_query("SELECT * FROM $tabella LIMIT 1",$link_db);
$i = @pg_num_fields($res);
for ($j = 0; $j < $i; $j++ ) {
$fieldname = @pg_field_name($res, $j);
$tab_fields[$fieldname]= @pg_field_type($res, $j);
* Recupera informazioni dal file e dalla query ed apre la funzione
* openError del file design/layouts.php dove cancella il buffer e manda a video l'errore codificato
* @desc Handler degli errori per le query.
function vmsql_error($sql, $message, $transazione= false, $link_db= false){
global $file_DB_error_log;
$GLOBALS['VMSQL_ERROR']= true;
// prende il tipo query (SELECT , INSERT, UPDATE, DELETE) se il tipo � diverso ahi ahi
// restituisci la query che ha dato errore
$sql_una_linea = str_replace(array("\n","\t")," ",$sql);
// Scrittura del file di errore
$dascrivere= date("Y-m-d H:i:s"). "\t"
. $_SERVER['HTTP_HOST']. " (". $_SERVER['SERVER_ADDR']. ")\t"
. $_SESSION['sessid'] . "\t"
. "Errore in ". $tipo_query . "\t"
$fp= fopen($file_DB_error_log,"a");
// richiamo la funzione openError
* Questa funzione viene eseguita da {@link vmsql_query} qualora il debug sia attivato
* @desc Funzione che restituisce a video l'SQL che ha generato l'errore
* @param unknown_type $sql
* @param unknown_type $message
echo "<pre>Errore su: ". $sql. "\n". $message. "</pre>";
// FUNZIONI DI TRANSAZIONE
* @desc Funzione di transazione che corrisponde ad un BEGIN
* @param resource $link_db
* @desc Funzione di transazione di ROLLBACK
* @param resource $link_db
* @desc Funzione di transazione di COMMIT
* @param resource $link_db
* Testa l'esistenza di un $valore (di solito l'ID) nel $campo di una $tabella,
* con eventuali clausole $and
* @param resource $link_db
* @param mixed $valore_id
function vmsql_test_id($link_db,$campo,$valore_id,$tabella,$and= "",$secure_test= false){
$sql= "SELECT * FROM $tabella WHERE $campo=$valore_id $and";
|