o, ancora più comodamente
codice:
class MySQLDbDriver extends BaseDbDriver
{
.
.
.
public function Escape($Value)
{
return mysql_real_escape_string($Value, $this->link);
}
.
.
.
public function Query($Query)
{
// Acquisisce gli argomenti opzionali della funzione (sono i parametri della query)
// rimuovendo il primo in quanto è la query stessa
$arguments = func_get_args();
array_shift($arguments);
// Effettua l'escape degli argomenti
foreach($arguments as $key => $value)
{
$arguments[$key] = $this->Escape($value);
}
// Costruisce la query inserendo gli argomenti
$escapedQueryWithArguments = vsprintf($Query, $arguments);
// Esegue la query
if ($this->isBuffered == true)
{
$result = mysql_query($escapedQueryWithArguments, $this->link);
}
else
{
$result = mysql_unbuffered_query($escapedQueryWithArguments, $this->link);
}
// Verifica se la query è riuscita
if ($result === false)
{
// Lancia un'eccezione
throw new SqlQueryException(mysql_errno($this->link), mysql_error($this->link), $escapedQueryWithArguments);
}
// Operazione riuscita, restituisce la risorsa
return $result;
}
.
.
.
}
l'ho riscritta qui al volo, quindi potrebbero esserci degli errori, in ogni caso cosi facendo si tutta la gestione parecchio più semplificata e flessibile