[RISOLTO] [PHP5] Classe per connessione a MySql

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
Dott104
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 432
Iscrizione: sabato 16 settembre 2006, 13:21
Contatti:

[RISOLTO] [PHP5] Classe per connessione a MySql

Messaggio da Dott104 »

Sto creando una classe ConnessioneDb per creare un'interfaccia trasparente tra applicazione e MySql! Un dubbio che mi attanaglia da sempre è: "Devo per forza eseguire una connessione al db PER OGNI query?"! Non si può conservare la connessione in una variabile e poi riutilizzarla ogni volta che serve???

La classe che sto abbozzando è questa

Codice: Seleziona tutto

<?php
	// Gestione connessione al db

	class Connessionedb
	{
		// Metodi
		public  function __constructor($nomeHost = null, $nomeDataBase = null) 
		{
			if($nomeHost == null)
				$nomeHost = $this->_hostDbDB;
			
			if($nomeDataBase == null)
				$nomeDataBase = $this->_nomeDB;
				
			$this->_db_connect = mysql_connect($nomeHost, $this->_utente, $this->_password);
			$this->_db = mysql_select_db($nomeDataBase);			
		
		}
		
		public function query($query)
		{
			if($query != null)
			{
				// Esegui query
			}
			else
				die("Immettere query valida\n</br>");
			 
		}
		
		public function getProvince()
		{
			$queryProvince = "select * from province";
			
			print "Prova ".$this->_utente." asd ".$this->_password."\n<br>";
			
//			$this->_db_connect = mysql_connect($this->_hostDb, $this->_utente, $this->_password);
//			$this->_db = mysql_select_db("pone");
			
			return  mysql_query($queryProvince, $this->_db_connect) or die mysql_error();
		}
		
		// Attributi
		private $_nomeDb = "pone";
		private $_utente = "lavoro";
		private $_password = "lavoro";
		private $_hostDb ="localhost";
		
		
		private $_db = null;
		private $_db_connect = null;
	}
?>
Ultima modifica di Dott104 il venerdì 12 ottobre 2007, 11:30, modificato 1 volta in totale.
Be yourself...
My blog
"La scienza è essenzialmente contemplazione del bello" Giuseppe Trautteur, mio professore di Calcolabilità e Complessità
Avatar utente
sanjelanka
Prode Principiante
Messaggi: 218
Iscrizione: sabato 18 febbraio 2006, 20:05

Re: [PHP5] Classe per connessione a MySql

Messaggio da sanjelanka »

Puoi mantere la connessione in una variabile locale della classe...
così non stai a fare la connessione ogni volta...

oppure più semplicemente crei una connessione al di fuori della classe  e la passi come parameto
(soluzione meno elegante ma più ortodossa...)

meglio sarebbe creare un attributo che tiene conto della connessione
dopodichè crei un metodo connectTo(bla bla parametri)...

dove per parametri hai

$user è il nome utente con cui ti connetti
$host è l'indirizzo a cui vuoi connetterti...

mentre per attributo locale per la connessione usi

$conn

così alla fine il metodo connectTo ti risulterà formato da poche righe è avrai la connessione sempre disponibile

Codice: Seleziona tutto


$conn= mysql_connect($host,$user,"");
if( ! $conn) exit ("Errore di connessione");

una volta finite tutte le tue query ricordati di chiudere la connessione cn il comando

Codice: Seleziona tutto

mysql_close($conn);
Ultima modifica di sanjelanka il martedì 9 ottobre 2007, 14:29, modificato 1 volta in totale.
Avatar utente
Dott104
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 432
Iscrizione: sabato 16 settembre 2006, 13:21
Contatti:

Re: [PHP5] Classe per connessione a MySql

Messaggio da Dott104 »

Nella classe che ho postato VORREI fare quello che dici tu!

La mia domanda è: "Ogni volta che faccio na query, devo fare sempre una connect?"

Nel codice che ho postato prima, così come sta non funziona! Nell'attributo di classe $_db_connect c'è la connessione al db, in $_db il database selezionato; tutto questo fatto alla creazione della classe. Vorrei che la cosa sia fatta solo nel costruttore e poter creare vari metodi in cui eseguo SOLO mysql_query($query);

O forse sto dicendo solo cavolate? :P
Be yourself...
My blog
"La scienza è essenzialmente contemplazione del bello" Giuseppe Trautteur, mio professore di Calcolabilità e Complessità
Avatar utente
sanjelanka
Prode Principiante
Messaggi: 218
Iscrizione: sabato 18 febbraio 2006, 20:05

Re: [PHP5] Classe per connessione a MySql

Messaggio da sanjelanka »

Scusa avevo fraiteso ...

comunque qual è l'errore che ti da?
Avatar utente
Dott104
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 432
Iscrizione: sabato 16 settembre 2006, 13:21
Contatti:

Re: [PHP5] Classe per connessione a MySql

Messaggio da Dott104 »

Ho risolto!!! Con una botta di c**o di dimensione enormi!!

Esiste l'estensione mysqli, nativa per PHP5 a quanto pare che fornisce un'ottima interfaccia OOP al db!!

Praticamente fa tutto quello che avrei voluto creare io prima! Unica connessione, tante query e buone prestazioni! :D

Grazie per l'interessamento!

Giusto per essere preciso, con:

$db = mysqli_connect("localhost", UTENTE, PASS, NOME_DB);

In un solo colpo si ha il db prescelto connesso!

con $db->query(---) eseguite le query! Che capata!! :D
Be yourself...
My blog
"La scienza è essenzialmente contemplazione del bello" Giuseppe Trautteur, mio professore di Calcolabilità e Complessità
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti