classe mysql (come usarla?)

Salve ho trovato questa classe, però non so come usarla , mi potete aiutarmi come si usa questa classe

che ho trovato ad questo indirizzo:

http://www.claudiogarau.it/php/Gestire_MySQL_con_una_classe_in_PHP.php

Mi dite come si usa?.

grazie.

<?PHP
class mysql {

//connessione al DBMS
 function Connect($host, $user, $pass, $data){
  $connessione = @mysql_connect("$host","$user","$pass");

//selezione del database
  @mysql_select_db("$data", $connessione);
  }

//query sulla tabella 
 function Query($sql){
  $sql = @mysql_query($sql) or die (mysql_error());
  return $sql;
  }

//estrazione di un record
 function FetchRow($sql){
  $rows = @mysql_fetch_row($sql);
  return $rows;
  }

//conteggio dei records
 function FetchNum($sql){
  $num = @mysql_num_rows($sql);
  return $num;
  }

//estrazione dei records  
  function FetchArray($sql){
  $array = @mysql_fetch_array($sql);
  return $array;
  }

//chiusura della connessione
 function Close(){
  @mysql_close();
  }
}
?>
inviato 8 anni fa
terremoto
X 0 X

Quella classe non fa ne più ne meno di quello che fanno le normali funzioni mysql, pertanto non ne vedo l'utilità.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Quella classe non fa ne più ne meno di quello che fanno le normali funzioni mysql, pertanto non ne vedo l'utilità.

 :bye:

ok?. allora cerco un'altra classe un pò migliore,

te che classe mi consigli ... quelle di phpclasses?, vanno bene?.

ciao. a dopo

risposto 8 anni fa
terremoto
X 0 X

Che cosa ti serve esattamente?

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

...ma i metodi delle classi in php si scrivono con la prima lettera maiuscola?

...scusate, ma essendo abituato con java... =D

risposto 8 anni fa
larchitetto
X 0 X

...ma i metodi delle classi in php si scrivono con la prima lettera maiuscola?

...scusate, ma essendo abituato con java... =D

No, in PHP è indifferente.

Per convenzione, in caso di nomi composti, si scrive la prima parola minuscola e le seguenti con l'iniziale maiuscola (per esempio, si scrive metodoDiUnClasse() e non MetodoDiUnaClasse(), ma ripeto è una convenzione).

risposto 8 anni fa
sydarex
X 0 X

Quanto alla classe: è semplice.

Crei un oggetto mysql.

Con il metodo Connect(), a cui passi host, username, password e nome dsel database, ti connetti e scegli il database.

Poi puoi eseguire queruy con Query(), passandole la stringa della query. Comunque, è scritta proprio male: l'unica utilità che potrebbe avere questo metodo sarebbe il filtraggio della query per evitare SQL injections, e non lo fa.

Andrebbe modificata con://query sulla tabella  function Query($sql){   $sql = mysql_real_escape_string(strip_tags(trim($sql)));   $sql = @mysql_query($sql) or die (mysql_error());   return $sql;   }

FetchRow() e FetchArray() ti restituiscono una riga dei risultati della query (ti fai un while e ad ogni ciclo la chiami, ottenendo ad ogni iterazione una riga diversa), la differenza è che la prima te li restituisce in un array, l'altra in un array associativo dove gli indici sono i nomi delle colonne.

FetchNum() ti restituisce il numero di righe restituite dalla query.

Tutte e tre danno FALSE una volta che le righe sono finite o se la query non ne ha restituite affatto.

Close() ti chiude la connessione.

Comunque la classe è scritta da cani proprio.

Non funzionerà bene se usi più di un oggetto mysql.

Ti spiego perché: mysql_close(), o mysql_query() richiede un identificativo della connessione. Se non lo ha, usa l'ultima connessione aperta. Quindi, se io scrivo questo codice:<?php include_once 'mysql.class.php'; $c1 = new mysql(); $c1->Connect("localhost","root","root","test"); $c2 = new mysql(); $c2->Connect("altrohost","root","root","test"); $res1 = $ci->Query("SELECT id, nome FROM utenti"); // Uso $c1 $res2 = $ci->Query("SELECT id, nome FROM utenti"); // Uso $c2 $c1->Close(); $c2->Close(): ?>Entrambe le query eseguite verranno eseguite su altrohost.

In più, verrà chiusa prima la connessione ad altrohost e poi quella a localhost, perché mysql_close() chiude l'ultima connessione aperta se non ha argomenti.

Quindi, lascia perdere questa classe. Ti confonderà solo le idee.

Studiati le funzioni di MySQL e poi potrai scriverti da solo la tua classe. ;)

PS: Chiedo scusa per il doppio post, ma non mi fa modificare l'altro causa scadenza del tempo limite. :(

risposto 8 anni fa
sydarex
modificato 8 anni fa
X 0 X

Sì ma a che serve; ottima un'idea di astrazione dal tipo di database, ad esempio una classe che indipendentemente dal motore di database implementa dei metodi comuni per l'accesso.

Ma oramai rimane solo un esercizio di stile, comunque sempre gradito.

Con i metodi di accesso di tipo PDO anche l'astrazione è già un dato di fatto, e se il tuo server non lo implementa ci sono le classi di astrazione appunto, come DB::PEAR (migliorata mi pare) ed altre simili, o cambi server ;).

Sulle convenzioni c'è da fare una precisazione, se costruisci una classe i nomi dei metodi interni ed esterni alla classe andrebbero sempre andrebbero sempre minuscoli o come detto da sidarex a "gobba di cammello", una convenzione propria del C ma mutuata ad ogni progetto vuole che la prima lettera sia sempre minuscola per identificare il tipo di variabile, funzione, classe che si vuole esportare.

Purtroppo il PHP è un linguaggio non tipizzato o a tipizzazione debole, quindi non ha senso indicare il tipo in una variabile, però è buona norma farlo comunque, in modo da ricordarsi a che serve quella variabile o cosa fa quella funzione e che tipo di dati ritorna, se vi par poco :)

risposto 8 anni fa
Marco Grazia
X 0 X

...ma i metodi delle classi in php si scrivono con la prima lettera maiuscola?

...scusate, ma essendo abituato con java... =D

Anche in Java la convenzione è di usare la lettera minuscola per i metodi, mentre la maiuscola per i nomi delle classi.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

scusate, se vi rispondo adesso, ma ora devo aggiustare un notebook,

ed poi provo quello che mi avevete detto.

per sydarex :

grazie, per la risposta , apena posso provo.

grazie mille a tutti

risposto 8 anni fa
terremoto
X 0 X

Che cosa ti serve esattamente?

 :bye:

voglio usare una classe per essere più ordinato e il codice più pulito.

risposto 8 anni fa
terremoto
X 0 X

scusate, io ho trovato anche questa che ci sono anche gli esempi.

http://php.html.it/script/vedi/4138/php-class-for-mysql/

ciao e grazie mille.

risposto 8 anni fa
terremoto
X 0 X

Non puoi usare mysqli o PDO MySQL?

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

si infatti, alla fine userò quelli.

risposto 8 anni fa
terremoto
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda