Source for file vmsql.mysqli.php
Documentation is available at vmsql.mysqli.php
* LIBRERIA SQL per MySQL(i) con gestione errori ed altre utility
* @subpackage DB-Libraries
* @author Mario Marcello Verona <marcelloverona@gmail.com>
* @copyright 2007 Mario Marcello Verona
* @see vmsql.postgres.php
* @license http://www.gnu.org/licenses/gpl.html GNU Public License
* @desc Esegue una query $sql
* @param bool $transazione
function vmsql_query($sql,$link_db,$transazione= false){
if($GLOBALS['DEBUG_SQL']) $GLOBALS['DEBUG_SQL_STRING'][] = $sql;
$obj = @mysqli_query($link_db,$sql,MYSQLI_STORE_RESULT) or vmsql_error($sql,mysqli_error($link_db),$transazione,$link_db);
vmsql_error($sql,"Link al DB non disponibile",$transazione,$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.
* Se l'sql contiene errori la funzione restituisce false, ma l'esecuzione prosegue.
* @param bool $secure_mode
function vmsql_try($sql,$link_db,$secure_mode= true,$prendi_errorn= false){
// piccolo accorgimento per la sicurezza...
$sql= preg_replace("'([\W](UPDATE)|(DELETE)|(INSERT)|(DROP)|(ALTER)|(UNION)[\W])|;'ui","",$sql);
$res = @mysqli_query($link_db,$sql);
if($res) @mysqli_free_result($res);
// se si vuole intercettare l'eventuale codice errore
$errn = @mysqli_errno($link_db);
$fp= @fopen("./rpc.debug.txt","a");
fwrite($fp,date("Y-m-d H:i:s"). " --- $errn ---". @mysqli_error($link_db). "\n");
* @desc Funzione di fetch_row
$RS= @mysqli_fetch_row($res);
* @desc Funzione di fetch_assoc
$RS= @mysqli_fetch_assoc($res);
* @desc Funzione di fetch_array
$RS= @mysqli_fetch_array($res);
* @desc Funzione di num_rows
return @mysqli_num_rows($res);
* @desc Funzione di insert ID che restituisce l'ultimo ID autoincrement inserito (MySQL)
* @param string $tablename Per compatibilità con Postgres
* @param string $fieldname Per compatibilità con Postgres
return mysqli_insert_id($link);
* @desc Funzione di affected_rows
* @param resource $query Per compatibilità con Postgres
return @mysqli_affected_rows($link);
* @desc Funzione di num_fields
return @mysqli_num_fields($dbname);
* @desc Funzione di free_result
mysqli_free_result($result);
#########################################################################################
# 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
/*function vmsql_fields($tabella,$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;
// se è impostato il DEBUG si ferma qui.
// 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
mysqli_autocommit($link_db, FALSE);
* @desc Funzione di transazione di ROLLBACK
* @param resource $link_db
mysqli_rollback($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";
|