Manuale Essenziale PHP

download Manuale Essenziale PHP

of 39

Transcript of Manuale Essenziale PHP

  • 8/6/2019 Manuale Essenziale PHP

    1/39

    Autore: Luciano Viviani

    Classe: TERZA INFORMATAICA SERALE (3IS)

    Anno scolastico: 2003/2004

    Scuola: Itis Euganeo

    MANUAL E ESSENZI ALE PHP

    Manuale

    Questa dispensa riassume la sintassiessenziale del linguaggio PHP e le suefunzioni di interfaccia

    con il database MySql. Lo scopo diquesta dispensa, rivolta agli studenti delquinto anno della

    specializzazione Informatica, difornire quei mezzi essenziali chepermettano loro di realizzare

    applicazioni client-server in una rete

    Internet-Intranet con accesso ai daticontenuti in un database.

    Per ogni approfondimento ilriferimento dobbligo ai relativi manualidisponibili in linea.

  • 8/6/2019 Manuale Essenziale PHP

    2/39

    Manuale essenziale PHP-MySql

    IntroduzioneQuesto testo ha lo scopo di descrivere luso del linguaggio PHP in particolare per il suo impiego condatabase MySql. Non contiene quindi una descrizione completa del linguaggio ma le sue parti ritenuteessenziali. Come prerequisito richiesta una conoscenza del linguaggio C++ cui si fa riferimento in svariati

    punti. Il manuale completo pu essere scaricato dal sito www.php.it.Gli esempi non sono stati verificati, possono quindi contenere degli errori: il manuale stato realizzato perpuro scopo didattico, chi usa PHP in applicazioni commerciali faccia riferimento alla documentazioneufficiale. Non sono in genere citate varianti del linguaggio utilizzate in versioni precedenti alla 4.1.0.

    Sintassi del linguaggio

    Uso del PHP

    Normalmente i file PHP contengono parti scritte in HTML e altre parti scritte in PHP contenute tra specialiTag. Quando linterprete PHP inizia ad esaminare un file, visualizzer il contenuto del file sino a quando nonincontra uno dei tag speciali indicanti l'inizio del codice da interpretare come istruzioni PHP. A questo punto

    il parser eseguir tutto il codice trovato sino a quando non incontrer i tag di chiusura, che indicano al parserdi tornare alla modalit di visualizzazione: tutto ci che si trova all'esterno dei tag PHP sar lasciatoinalterato, mentre tutto ci che si trova all'interno sar eseguito come codice PHP.

    Modi per uscire dalla modalit HTML

    Esistono 4 set di tag che possono essere utilizzati per delimitare blocchi di codice PHP. Soltanto due diquesti ( e . . . ) sono sempredisponibili; gli altri possono essere attivati o disattivati tramite il file di configurazione php.ini. Sebbene i tagbrevi o quelli in stile ASP possano essere pratici, il supporto di questi non garantito in tutte le versioni.Quindi, se si intende inserire codice PHP all'interno di testi XML o XHTML, occorre utilizzare per essere conformi allo standard XML.

    I tag supportati dal PHP sono:1)

    2) Questa un'abbreviazione per ""

    3) echo ("alcuni editor (tipo FrontPage) non amano leistruzioni di elaborazione");

    4)

    Il primo, , il metodo preferenziale, dato che permette l'utilizzo del PHP all'interno dicodice conforme a specifiche XML come XHTML.

    Il secondo metodo disponibile solo se sono stati abilitati i tags abbreviati. Ci pu essere impostato siautilizzando la funzione short_tags() (solo PHP 3), sia abilitando nel file di configurazione del PHPl'opzione short_open_tag, oppure compilando il PHP utilizzando l'opzione --enable-short-tagsnel comando configure. Sebbene siano abilitati nel php.ini-dist rilasciato, l'uso dei tag brevi vivamentesconsigliato.Il quarto modo disponibile solo se sono stati attivati nel file di configurazione i tag in stile ASP tramitel'opzione asp_tags.Nota: Il supporto per i tag nello stile ASP stato aggiunto nella versione 3.0.4.

    Nota: L'utilizzo dei tag brevi dovrebbe essere evitato nello sviluppo di applicazioni o librerie destinate alla

    distribuzione o destinati a server di produzione PHP di cui non si ha il controllo poich questi tag

    potrebbero non essere attivi sul server di destinazione. Per avere maggiore portabilit, codice

    redistribuibile, occorre essere certi di non utilizzare i tag brevi.

  • 8/6/2019 Manuale Essenziale PHP

    3/39

    Manuale essenziale PHP-MySql

    Il tag di chiusura di un blocco include il carattere di 'a capo' immediatamente seguente, se presente. Inoltre, iltag di chiusura viene considerato automaticamente come punto e virgola; pertanto non occorre inserire ilpunto e virgola alla fine dell'ultima riga del blocco php.Il PHP permette strutture tipo le seguenti:

    Questa vera.

    Questa falsa.

    Questo esempio agisce come atteso, poich il PHP rileva il tag di chiusura ?>, e da questo punto, inizia adare in output tutto ci che trova fino a quando non rileva un'altro tag di apertura. Certamente l'esempio dato macchinoso, ma per l'output di grossi blocchi di testo, l'uscire dalla modalit di parsing PHP,

    generalmente pi efficiente piuttosto che inviare il testo tramite ripetute funzioni echo() o print().

    Separazione delle istruzioni

    Le istruzioni sono separate come nel C o in Perl - ogni istruzione termina con un punto e virgola.Il tag di chiusura (?>) implica anche la fine di un'istruzione, perci le seguenti sono equivalenti:

    Commenti

    Il PHP supporta i commenti dei linguaggi 'C', 'C++' e della shell Unix. Per esempio:

    Lo stile di commento su linea singola commenta il testo fino alla fine della riga oppure alla fine del bloccodi codice PHP, dipende da cosa si incontra prima.

  • 8/6/2019 Manuale Essenziale PHP

    4/39

    Manuale essenziale PHP-MySql

    Tipi di dati

    Introduzione

    PHP supporta otto tipi primitivi:Quattro scalari: boolean, integer, float (in realt double), string

    Due tipi composti: array, objectDue tipi speciali: resurce, NULLIl tipo di una variabile non solitamente stabilito dal programmatore (Come in C o Java), ma deciso daPHP in base al contesto in cui la variabile usata.Esempio:

    Si pu forzare la conversione di una variabile in un determinato tipo con loperatore di cast (come in C oJava) o con la funzione settype(); da notare che la stessa variabile pu assumere valori diversi in certe

    situazioni, in base al tipo che in quel contesto.

    Boolean

    Pu assumere i due valori TRUE o FALSE, stato introdotto nella versione 4SintassiPer introdurre una variabile booleana basta assegnarle il valore TRUE o FALSE (maiuscole o minuscole)

    Solitamente un valore booleano viene restituito da operatori di confronto in una struttura di controllo

    Conversione in booleanPer convertire esplicitamente un valore in boolean si usano gli operatori di cast (bool) o (boolean), i seguentivalori sono considerati FALSE: il boolean FALSE linteger 0 (zero) il float 0.0 (zero) la stringa vuota e la stringa "0" un array con zero elementi

    un oggetto con zero variabili membro NULLTutti gli altri valori sono considerati TRUE

  • 8/6/2019 Manuale Essenziale PHP

    5/39

    Manuale essenziale PHP-MySql

    Integer

    Un Integer un numero intero di lunghezza dipendente dal sistema operativo, in genere 32 bit con segno,pu essere specificato in base 10, 16, 8 eventualmente preceduto dal segno. I numeri che iniziano con unacifra diversa da 0 vengono considerati decimali, se iniziano con 0 ottali, se iniziano con 0x esadecimali

    Overflow degli interiSe specificate un numero oltre i limiti del tipo intero questo verr interpretato come float, lo stesso accadeper il risultato di una operazione tra interi

  • 8/6/2019 Manuale Essenziale PHP

    6/39

    Manuale essenziale PHP-MySql

    String

    Una stringa una serie di caratteri: in PHP la rappresentazione a 8 bit, ci sono quindi esattamente 256caratteri diversi. Questo implica che non c supporto nativo per i codici Unicode, qualche supporto fornitodalle funzioni utf8_encode() e utf8_decode(). La lunghezza di una stringa indefinita.Sintassi

    Una stringa costante pu essere specificata in tre modi:Tra apici (virgolette semplici)Se volete inserire un apice nella stringa dovete farlo precedere da backslash (\) , il carattere backslash puessere inserito raddoppiandolo(\\). In questo formato non possono essere inseriti caratteri speciali come \no \t.Tra virgolette

    Se la stringa racchiusa tra virgolette () al suo interno si possono usare i caratteri speciali del linguaggio C,in particolare:

    \n linefeed (LF or 0x0A (10) in ASCII)

    \r carriage return (CR or 0x0D (13) in ASCII)

    \t horizontal tab (HT or 0x09 (9) in ASCII)

    \\ backslash

    \$ dollar sign\" double-quote

    \[0-7] codice ottale del carattere (da 1 a 3 cifre)

    \x[0-9A-Fa-f] codice esadecimale (1 o 2 cifre)

    La caratteristica pi importante delle stringhe racchiuse tra virgolette che le variabili vengono espanse, ciosostituite con il loro valoreHeredocIn PHP 4 stata aggiunta unaltra possibilit per scrivere stringhe costanti, utile quando la stringa moltolunga e quindi si vuole scrivere su pi linee, in questo caso la stringa va inserita tra

    Accesso ai singoli caratteri di una stringaI caratteri di una stringa si comportano come gli elementi di un vettore, il primo carattere ha indice 0, lindicein PHP 4 va racchiuso tra parentesi graffe {} anche se si possono usare quelle quadre degli array (sintassideprecata);

    Funzioni e operatori utili per le stringhe

    Le stringhe possono essere concatenate con loperatore punto ., da notare che il + usato per esempio daJava non funziona. Ci sono inoltre molte funzioni utili per modificare le stringhe.

    Conversione in stringaSi pu convertire un valore in stringa usando il cast (string) o la funzione strval().

  • 8/6/2019 Manuale Essenziale PHP

    7/39

    Manuale essenziale PHP-MySql

    La conversione in stringa avviene automaticamente con le funzioni echo() o print() o quando un valore confrontato con una stringa. TRUE viene convertito in 1 e FALSE nella stringa vuota (in questo modo possibile la conversione inversa). Un numero intero o float convertito nella sua rappresentazione.Il contenuto di un Array non convertito automaticamente in stringa, si ottiene la stringa Array mapossono esserlo i suoi elementi, in modo simile si comportano gli Object.NULL sempre convertito nella stringa vuota.Conversione di stringhe in numeriSe una stringa contiene allinizio un valore numerico in un formato valido viene convertita in numero.

    Array

    Un array in PHP una mappa ordinata, cio un tipo che associa una chiave a un valore. Viene creato con ilseguente costrutto sintattico:

    array( [key =>] value,...);

    dove key pu essere un intero o una stringa e value un qualsiasi valore, compreso un altro array.

    Se non specificate alcuna chiave viene preso il massimo indice intero aumentato di 1, se specificate una

    chiave che esiste gi il valore sovrascritto.

    Attenzione!Da PHP 4.3.0 il comportamento cambiato per le chiavi costituite da numeri negativi, ora se il valoremassimo negativo il nuovo valore 0 (prima era il numero negativo massimo pi uno)Un array pu essere modificato scrivendo in esso valori esplicitamente con la sintassi:$arr[key]=valore;

    Se larray non esiste viene creatoSe key non specificata viene preso lultimo indice intero aumentato di 1, per rimuovere un elemento si usala funzione unset().

    Conversione in arrayPer ciascuno dei tipi: integer, float, string, boolean e resource, se convertite il valore in array ottenete unarray con un solo elemento con indice 0.

    Gli array sono ordinati, lordine pu essere cambiato con svariate funzioni di ordinamento, la funzionecount() ne conta gli elementi.

  • 8/6/2019 Manuale Essenziale PHP

    8/39

    Manuale essenziale PHP-MySql

    Object

    Il PHP consente di creare oggetti e di usarli in modo simile a C++ e Java, per esempio:

    Se si converte unaltra variabile in un oggetto questo viene creato e contiene, se la variabile non vuota, unavariabile membro di nome scalar.

    Resource

    una variabile speciale che contiene un riferimento a una risorsa esterna creata e usata da funzioni speciali,per esempio un puntatore a un file aperto, una connessione a un database e cos via. Nessun altro valore puessere convertito in una risorsa. PHP 4 libera automaticamente la risorse non usate, ad eccezione delleconnessioni persistenti a un database.

    NULL

    Il valore speciale NULL rappresenta una variabile senza alcun valore ed lunico valore possibile per il tipo

    NULL introdotta in PHP 4Una variabile considerata NULL se:gli stata assegnata la costante NULL;non gli stato ancora assegnato un valore;su di essa stata applicata la funzione unset().

    VariabiliLe variabili in PHP sono rappresentate dal simbolo di dollaro seguito dal nome della variabile, il nome case-sensitive.Fino alla versione 3 le variabili sono sempre assegnate per valore, cio quando una espressione vieneassegnata ad una variabile il risultato copiato nella variabile stessa.PHP 4 permette anche lassegnazione per riferimento, ci significa che la nuova variabile un sinonimo

    (alias) di quella originale: modificandone una modifico anche laltra. In questo modo si guadagna in velocite in spazio in memoria, in particolare con variabili molto grandi. Lassegnazione per riferimento avvieneponendo prima della variabile il simbolo &.

    Da notare che solo le variabili con nome possono essere assegnate per riferimento, $a=&(3+2); non valida.Non nemmeno concesso far riferimento al valore di ritorno di una funzione.

    Variabili predefinitePHP fornisce un gran numero di variabili predefinite, molte di queste tuttavia dipendono dal particolare

    i i d ll i d ll fi i

  • 8/6/2019 Manuale Essenziale PHP

    9/39

    Manuale essenziale PHP-MySql

    Dalla versione 4.1.0 PHP fornisce inoltre un insieme di array predefiniti contenenti variabili del server web,questi array sono sempre disponibili e sono noti come autoglobals o superglobals.$GLOBALS

    Contiene un riferimento a ciascuna variabile globale correntemente disponibile, le chiavi sono i nomi dellevariabili.$_SERVER

    Variabili settate dal server web o direttamente correlate allambiente di esecuzione dello script corrente.$_GET

    Variabili fornite dal metodo GET HTTP.$_POST

    Variabili fornite dal metodo POST HTTP.$_COOKIEVariabili fornite dai cookie HTTP.$_FILES

    Variabili fornite allupload di file.$_ENVVariabili fornite dallambiente.$_REQUEST

    Variabili fornite dai metodi di input GET, POST e COOKIE$_SESSIONVariabili di sessione correntemente registrate

    Variabili esterne a PHP

    Vengono usate per leggere il contenuto di una form con il metodo GET e POST, per esempio una formHTML potrebbe essere la seguente:

    Nome:

    Email:

    Ci sono vari modi con cui il file ricevi.php pu ottenere i dati, eccone alcuni:

    Laccesso ai dati di una form che usa il metodo GET simile, usando le variabili predefinite.Nota: Se nel nome di una variabile esterna viene usato il punto PHP lo converte in un trattino basso(underscore)Nomi di variabili con IMAGE SUBMIT

    In una form possibile usare unimmagine al posto del pulsante submit con la seguente sintassi:

    quando lutente clicca con il mouse in un punto dellimmagine, la form viene trasmessa con la variabile dinome sub e due variabili addizionali: sub_x e sub_y che contengono le coordinate del punto allinternodellimmagine.HTTP CookiePHP supporta in modo trasparente i cookie come definiti dalle specifiche Netscape. I cookie sono creati conla funzione setcookie(), dato che i cookie fanno parte dellheader HTTP la funzione deve esserechiamata prima di inviare qualsiasi output al browser.I dati dei cookie sono disponibili negli array di dati $_COOKIE, $HTTP_COOKIE_VARS e $_REQUEST.

    Variabili static

    Una variabile statica non perde il suo valore quando lesecuzione di una funzione termina, possono essereusate per realizzare contatori, per esempio:

  • 8/6/2019 Manuale Essenziale PHP

    10/39

    Manuale essenziale PHP-MySql

    In questo caso il valore di $a viene incrementato e scritto ogni volta che la funzione viene chiamata,lassegnazione $a=0; eseguita solo la prima volta che la funzione chiamata. Ad una variabile statica nonpu essere assegnata una espressione, per esempio static $a=1+1; non unespressione valida.

    Variabili variabil i

    Talvolta conveniente avere nomi di variabili che possono essi stessi cambiare, lassegnazione viene fattacon un doppio simbolo di dollaro, per esempio:

    crea una nuova variabile con nome $ciao a cui ci si pu riferire con ${$a}.

    CostantiUna costante un identificatore (nome) per un valore. Come si pu intuire, tale valore non pu cambiaredurante l'esecuzione dello script (fanno eccezione le costanti magiche, che, in realt, non sono costanti). Unacostante "case-sensitive" per default. convenzione comune che i nomi di costante siano sempremaiuscoli.Come le superglobals, costante sempre globale. Si pu accedere alle costanti da qualsiasi punto dello scriptsenza tenere conto della visibilit. possibile definire una variabile utilizzando la funzione define(). Una volta definita, a una costante non possibile cambiare il valore o eliminarla.

    Le costanti possono contenere solo dati di tipo scalare (boolean, integer, float e string).Per ottenere il valore di una costante sufficiente specificarne il nome. A differenza delle variabili, non necessario anteporre il simbolo $ al nome di una costante. Si pu anche utilizzare la funzione constant(),per leggere il valore di una costante, nel caso in cui se ne ottenga dinamicamente il nome. Si utilizziget_defined_constants() per ottenere una lista delle costanti definite.Se si utilizza il nome di una costante che non definita, PHP assume che detto valore sia il nome dellacostante stessa, come se si fosse inserito il testo nel nome . Quando ci accade PHP segnala il problema conun E_NOTICE. Per sapere se una costante definita, si pu utilizzare la funzione defined().Di seguito sono riportate le principali differenze rispetto le variabili: Le costanti non iniziano con il segno del dollaro ($); Le costanti possono essere definite solo con la funzione define() e non tramite assegnazione;

    Le costanti possono essere definite e utilizzate ovunque senza seguire le regole di visibilit; Una volta impostate, le costanti non possono essere ridefinite n annullate; Le costanti possono essere solo valori scalari;

    Costanti predefiniteIl PHP mette a disposizione ad ogni script diverse costanti predefinite. Alcune di queste, tuttavia, sono createdai vari moduli, e, pertanto, saranno disponibili solo quando questi moduli sono caricati, sia dinamicamentesia staticamente.Esistono quattro costanti magiche il cui valore cambia in base al contesto in cui sono utilizzate. Ad esempio,il valore di_LINE_ dipende da quale linea si trova nel momento in cui richiamata. Queste costanti speciali

  • 8/6/2019 Manuale Essenziale PHP

    11/39

    Manuale essenziale PHP-MySql

    sono 'case-insensitive' e sono:

    Nome Descrizione_LINE_ Il numero di linea corrente._FILE_ Il nome e percorso assoluto del file.

    _FUNCTION_ Nome della funzione. (Aggiunta nel PHP 4.3.0.)_CLASS_ Nome della classe. (Aggiunta nel PHP 4.3.0.)_METHOD_ Nome del metodo della classe (Aggiunta nel PHP 5.0.0.)

    Espressioni

    Il modo pi semplice ma accurato per definire unespressione qualsiasi cosa che ha un valore.Una particolarit di PHP di essere un linguaggio orientato alle espressioni, quasi tutto unespressione.Consideriamo per esempio una semplice assegnazione:

    $a = 5;

    Si vede facilmente che ci sono due valori coinvolti, la costante 5 e la variabile $a, ma in realt c un valorein pi coinvolto: lassegnazione stessa, cio la stringa $a=5 che assume anchessa il valore 5.Per esempioqueste tre assegnazioni sono equivalenti, per quanto riguarda i valori assunti dalle variabili $a e $b:

    $b=($a=5);

    $a=5; $b=5;

    $b=$a=5;

    Si ricorda che le assegnazioni sono valutate da destra a sinistra.In genere le espressioni contengono operatori, per esempio operatori di relazione (==, !=, >,...) cheforniscono come risultato TRUE o FALSE, operatori aritmetici (+ , -, *) che possono essere combinati conlassegnazione come nel linguaggio C ($a *=5;) e loperatore condizionale ternario:

    se il valore della prima espressione TRUE (diverso da 0) viene valutata la seconda espressione altrimenti

    viene valutata la terza.

    Operatori

    Gli operatori sono simili a quelli del linguaggio C++, ci limiteremo a descrivere quelli che non esistono inC++ o quelli che funzionano in modo diverso.Richiamiamo due importanti propriet degli operatori: la precedenza e lassociativit:La precedenza stabilisce lordine in cui lespressione viene valutata, per esempio 3+5*5 viene valutata5*5=25+3=28 perch loperatore di moltiplicazione ha la precedenza su quello di somma. Le parentesialterano la precedenza, in caso di dubbio usatele!Lassociativit invece si riferisce invece allordine in cui vengono eseguiti operatori con la medesimaprecedenza, per esempio gli operatori aritmetici di pari precedenza, che hanno associativit sinistra vengono

    eseguiti da sinistra verso destra, mentre gli operatori di cast o incremento vengono eseguiti da destra versosinistra (per esempio (float) 3+2+5; esegue nell'ordine 3+2 poi al risultato viene aggiunto 5 e infineavviene la conversione in float.

    Associativit Operatori, quelli con precedenza pi bassa sono elencati per primisinistra ,sinistra orsinistra xorsinistra anddestra printsinistra = += -= *= /= .= %= &= |= ^= ~= =

    sinistra ? :sinistra ||sinistra &&

  • 8/6/2019 Manuale Essenziale PHP

    12/39

    Manuale essenziale PHP-MySql

    sinistra |sinistra ^sinistra &non associativi == != === !==non associativi < >=

    sinistra>

    sinistra + - .sinistra * / %destra ! ~ ++ -- (int) (float) (string) (array) (object) @destra [non associativi new

    Operatori di controllo errori

    PHP supporta un operatore di controllo dell'errore: il carattere at (@). Quando prefisso ad una espressione inPHP, qualunque messaggio di errore che potesse essere generato da quella espressione sar ignorato.Se la caratteristica track_errors abilitata, qualsiasi messaggio di errore generato dall'espressione sarsalvato nella variabile globale $php_errormsg. Questa variabile sar sovrascritta ad ogni errore, cos

    controllatela subito se volete usarla.

  • 8/6/2019 Manuale Essenziale PHP

    13/39

    Manuale essenziale PHP-MySql

    Nell'esempio precedente, il blocco HTML "a uguale a 5" incluso nel ramo if scritto utilizzando la sintassialternativa. Il blocco HTML verr visualizzato solamente se $a uguale a 5. Questa sintassi utile quando sivogliono produrre in modo condizionale due spezzoni di pagina HTML (o due intere pagine HTML).foreach

    PHP 4 (non PHP 3) permette l'uso della struttura di controllo foreach (per ogni elemento), alla stessa

    maniera del linguaggio Perl e altri. Ci semplicemente fornisce una facile metodo per attraversare un array.Esistono due possibili notazioni sintattiche; la seconda un'utile estensione della prima:

    foreach(array_expression as $value) istruzione;

    foreach(array_expression as $key => $value) istruzione;

    La prima attraversa l'array dato da array_expression. Ad ogni ciclo, si assegna il valore dell'elementocorrente a $value e il puntatore interno avanza di una posizione (in modo tale che al ciclo successivol'elemento corrente sar il successivo elemento dell'array).La seconda esegue lo stesso ciclo con la differenza che il valore dell'indice corrente viene assegnato ad ogniciclo, alla variabile $key.Nota: All'inizio dell'esecuzione di un ciclo foreach il puntatore interno viene automaticamente posizionato

    nella prima posizione. Questo significa che non necessario utilizzare la funzione reset() prima di unciclo foreach.Nota: importante notare che foreach opera su una copia dell'array, non sull'array stesso, pertanto ilpuntatore dell'array originale non viene modificato come accade utilizzando la funzione each() e lemodifiche agli elementi dell'array non appaiono nell'array originale.break

    break termina l'esecuzione di una struttura for, foreach, while, do..whileo switch.break accetta un argomento opzionale che definisce, nel caso di cicli annidati, il livello del ciclo che dainterrompere.

    /* Uso dell'argomento opzionale. */

    $i = 0;

    while (++$i) {

    switch ($i) {case 5:

    echo "At 5
    \n";

    break 1; /* Interrompe solo switch. */

    case 10:

    echo "At 10; quitting
    \n";

    break 2; /* Interrompe switch e while. */

    default:

    break;

    }

    }

    continue

    Si utilizza per interrompere l'esecuzione del ciclo corrente e continuare con l'esecuzione all'inizio del ciclosuccessivo; continue accetta un argomento numerico opzionale che definisce, nel caso di cicli annidati, ilnumero di cicli da interrompere e da cui iniziare l'esecuzione dell'iterazione successiva.declare

    Il costrutto declare si usa per definire direttive di esecuzione per blocchi di istruzioni. La sintassi similealla sintassi di altre strutture di controllo:

    declare (direttiva) istruzione

    La sezione direttiva permette di impostare il comportamento del blocco declare . Attualmente riconosciuta una sola direttiva: la direttiva ticks.TickUn tick un evento che si verifica per ogni N istruzioni di basso livello eseguite dal parser all'interno delblocco declare. Il valore per N viene specificato usando ticks=N all'interno della sezione direttiva delblocco declare.L'evento (o gli eventi) che si verifica su ogni tick specificato usando register_tick_function() .V d l' i i i b l i i d li N h ifi i i di i i k

  • 8/6/2019 Manuale Essenziale PHP

    14/39

    Manuale essenziale PHP-MySql

    L'esempio descrive il codice PHP all'interno del blocco declare, registrando il tempo in cui stataeseguita ogni seconda istruzione di basso livello. Questa informazione pu poi essere usata per trovare learee lente all'interno di particolari segmenti di codice. Questo processo pu essere ottimizzato usando altrimetodi: usando i tick pi conveniente e facile da implementare.I tick sono ben adeguati per il debugging, l'implementazione di semplici multitasking, backgrounded I/O e

    molti altri compiti.require()

    L'istruzione require() include e valuta il file specifico. Informazioni dettagliate su come funzionaquest'inclusione sono descritte nella documentazione di include().require() e include() sono identiche in ogni senso eccetto per come esse trattano gli errori.include() produce un Warning mentre require() restituisce un Fatal Error. In altre parole, non esitatead usare require() se volete che un file mancante fermi l'esecuzione della pagina. include() non sicomporta in questo modo, lo script continuer nonostante tutto. Assicuratevi di avere un appropriatoinclude_path impostato a dovere.

    include()

    L'istruzione include() include e valuta il file specificato.La documentazione seguente si applica anche a require(). I due costrutti sono identici in ogni aspettoeccetto per come essi trattano gli errori.Quando un file viene incluso, il codice che esso contiene eredita lo scope delle variabili della riga in cui siverifica l'inclusione. Qualsiasi variabile disponibile in quella riga nella chiamata al file sar disponibileall'interno del file chiamato, da quel punto in avanti.

    vars.php

    test php

  • 8/6/2019 Manuale Essenziale PHP

    15/39

    Manuale essenziale PHP-MySql

    Quando un file viene incluso, il parsing esce dalla modalit PHP e entra in modalit HTML all'inizio del fileincluso, e riprende alla fine. Per questa ragione, qualunque codice all'interno del file incluso che dovrebbeessere eseguito come codice PHP deve essere incluso all'interno dei tag PHP validi di apertura e chiusura.Se "URL fopen wrappers" nel PHP sono abilitati (come nella configurazione di default), potete specificare ilfile da includere usando un URL (via HTTP) invece che un percorso locale.Poich include() e require() sono speciali costrutti di linguaggio, dovete includerli all'interno diblocchi di istruzioni se si trovano in un blocco condizionale.

    require_once()

    L'istruzione require_once() include e valuta il file specificato durante l'esecuzione dello script. uncomportamento simile all'istruzione require(), con la sola differenza che se il codice di un file stato giincluso, esso non sar incluso nuovamente.

    require_once() dovrebbe essere usato nei casi dove lo stesso file potrebbe essere incluso e valutato pidi una volta durante una particolare esecuzione di uno script, e volete essere sicuri che esso sia inclusoesattamente una volta per evitare problemi con la ridefinizione di funzioni, riassegnazione di valori avariabili, etc.include_once()

    L'istruzione include_once() include e valuta il file specificato durante l'esecuzione dello script. uncomportamento simile all'istruzione include(), con la sola differenza che se il codice di un file stato giincluso, esso non sar incluso nuovamente. Come suggerisce il nome, esso sar incluso solo una volta.

    Funzioni

    Funzioni definite dall'utenteUna funzione pu essere definita usando la seguente sintassi:

    function fun ($arg_1, $arg_2, ..., $arg_n)

    {

    echo "Funzione di esempio.\n";

    return $retval;

    }

    All'interno di una funzione pu apparire qualunque codice PHP valido, persino altre funzioni e definizioni diclasse.Argomenti delle funzioniL'informazione pu essere passata alle funzioni tramite la lista degli argomenti, che sono liste di variabili e/o

    costanti delimitati dalla virgola.PHP supporta il passaggio di argomenti per valore (comportamento di default), il passaggio per riferimento,e i valori di default degli argomenti. Le liste di argomenti di lunghezza variabile sono supportate solo in PHP

  • 8/6/2019 Manuale Essenziale PHP

    16/39

    Manuale essenziale PHP-MySql

    4 e successivi: vedere Liste di argomenti a lunghezza variabile e i riferimenti alle funzionifunc_num_args(), func_get_arg(), e func_get_args() per maggiori informazioni.Costruire argomenti passati per riferimentoDi default, gli argomenti della funzione sono passati per valore (cos se cambiate il valore dell'argomentoall'interno della funzione, esso non cambier fuori della funzione). Se volete permettere ad una funzione dimodificare i suoi argomenti, dovete passarli per riferimento.Se volete che una argomento sia passato sempre per riferimento ad una funzione, dovete anteporre una ecommerciale (&) al nome dell'argomento nella definizione della funzione:

    function aggiungi_qualcosa(&$string)

    {

    $string .= 'e qualche altra cosa.';

    }

    $str = 'Questa una stringa, ';

    aggiungi_qualcosa($str);

    echo $str; // l'output sar 'Questa una stringa, e qualche altra cosa.'

    Valori predefiniti degli argomentiUna funzione pu definire valori predefiniti in stile C++ per argomenti scalari come segue:

    function fare_il_caffe ($tipo = "cappuccino"){

    return "Sto facendo una tazza di $tipo.\n";

    }

    echo fare_il_caffe ();

    echo fare_il_caffe ("espresso");

    L'output dal frammento di sopra :Sto facendo una tazza di cappuccino.

    Sto facendo una tazza di espresso.

    Il valore predefinito deve essere un'espressione costante, non (per esempio) una variabile o un membro diclasse.Da notare che quando vengono usati argomenti predefiniti, qualunque argomento predefinito dovrebbe essere

    a destra degli argomenti non-predefiniti; diversamente, le cose non funzioneranno come ci si aspetti. Siconsideri il seguente frammento di codice:

    function fare_lo_yogurt ($tipo = "yogurt", $gusto)

    {

    return "Fare una vaschetta di $tipo a $gusto.\n";

    }

    echo fare_lo_yogurt ("fragola"); // non funziona come si aspetta

    L'output dell'esempio di sopra :Warning: Missing argument 2 in call to fare_lo_yogurt() in

    /usr/local/etc/httpd/htdocs/php3test/functest.html on line 41

    Ora, si confronti il codice di sopra con questo:

    function fare_lo_yogurt ($gusto, $tipo = "yogurt"){

    return "Fare una vaschetta di $tipo a $gusto.\n";

    }

    echo fare_lo_yogurt ("fragola"); // funziona come si aspetta

    L'output di questo esempio : Fare una vaschetta di yogurt a fragola.Liste di argomenti a lunghezza variabilePHP 4 ha il supporto per le liste di argomenti a lunghezza variabile nelle funzioni definite dall'utente. Ci abbastanza semplice, usando le funzioni func_num_args(), func_get_arg(), efunc_get_args().Non richiesta una speciale sintassi, e le liste di argomenti possono ancora essere provviste esplicitamente

    con le definizioni di funzioni e si comporteranno normalmente.

  • 8/6/2019 Manuale Essenziale PHP

    17/39

    Manuale essenziale PHP-MySql

    Valori restituiti

    I valori vengono restituiti usando l'istruzione opzionale return. Pu essere restituito qualsiasi tipo, incluseliste ed oggetti. Ci provoca l'interruzione dell'esecuzione della funzione immediatamente e la restituzionedel controllo alla linea successiva a quella da cui stata chiamata.

    function quadrato ($num)

    {

    return $num * $num;}

    echo quadrato (4); // L'output '16'.

    Non possono essere restituiti valori multipli da una funzione, ma risultati simili possono essere ottenutirestituendo un array.

    function numeri_piccoli()

    {

    return array (0, 1, 2);

    }

    list ($zero, $uno, $due) = numeri_piccoli();

    Per restituire un riferimento da una funzione, necessario usare l'operatore di passaggio per riferimento &nella dichiarazione di funzione e quando viene assegnato il valore restituito ad una variabile:function &restituisce_riferimento()

    {

    return $un_riferimento;

    }

    $nuovo_riferimento =& restituisce_riferimento();

    Funzioni variabiliPHP supporta il concetto di funzioni variabili. Ci significa che se un nome di variabile ha le parentesiaccodate ad esso, PHP cercher una funzione con lo stesso nome del valore della variabile, e cercher dieseguirla. Tra le altre cose, ci pu essere usato per implementare delle callbacks, tabelle di funzioni e cosvia.

    Le funzioni variabili non funzionano con costrutti di linguaggio come echo(), unset(), isset(),empty() e include(). Il costrutto print() un'eccezione e funzioner. Questa una delle maggioridifferenze tra le funzioni PHP e i costrutti di linguaggio.

    Classi e OggettiUna classe una collezione di variabili e funzioni che utilizzano queste variabili. Una classe si definisceusando la seguente sintassi:

  • 8/6/2019 Manuale Essenziale PHP

    18/39

    Manuale essenziale PHP-MySql

    function add_item ($artnr, $num)

    {

    $this->items[$artnr] += $num;

    }

    // Prende $num articoli di $artnr e li rimuove dal carrello

    function remove_item ($artnr, $num)

    {

    if ($this->items[$artnr] > $num) {

    $this->items[$artnr] -= $num;

    return true;

    } else {

    return false;

    }

    }

    }

    ?>

    Il codice definisce una classe chiamata Cart composta da un array associativo che archivia gli articoli nel

    carrello e due funzioni per aggiungere e rimuovere gli articoli dal carrello stesso.CautelaIl nome stdClass usato esclusivamente da Zend ed riservato. Non quindi possibile creare una classechiamata stdClass in PHP.

    Cautela

    I nomi di funzione__sleep e__wakeup sono riservati e magici nelle classi PHP. Non possibile crearefunzioni con questi nomi nelle classi definite dall'utente, a meno che non sia desiderata la funzionalitmagica connessa a questi nomi. Si veda sotto per avere pi informazioni.Cautela

    PHP riserva tutti i nomi di funzione che iniziano con__ a funzioni magiche. Si suggerisce di non usare nomidi funzioni che utilizzano con i caratteri__in PHP a meno che non si desideri implementare una funzionalitmagica.

    In PHP 4, sono permesse inizializzazioni di variabili con valori costanti solamente grazie all'uso di var. Perinizializzare variabili con valori non-costanti, bisogna creare una funzione d'inizializzazione che chiamataautomaticamente all'istanziazione di un oggetto da una classe. Questo tipo di funzione si chiama costruttore .

    Le classi sono tipi del linguaggio, e sono modelli per variabili reali. Per creare una variabile oggetto si usal'operatore new.

  • 8/6/2019 Manuale Essenziale PHP

    19/39

    Manuale essenziale PHP-MySql

    ?>

    Il codice sopra, genera gli oggetti $cart e $another_cart , dalla classe Cart. La funzioneadd_item() dell'oggetto $cart chiamata per aggiungere una ricorrenza dell'articolo numero 10 a$cart. A $another_cart sono aggiunte 3 ricorrenze dell'articolo numero 0815.extends

    Spesso si ha bisogno di avere classi con variabili e funzioni simili ad altre classi. buona norma definire unaclasse in modo generico, sia per poterla riutilizzare spesso, sia per poterla adattare a scopi specifici. Perfacilitare questa operazione, possibile generare classi per estensione di altre classi. Una classe estesa oderivata ha tutte le variabili e le funzioni della classe di base pi tutto ci che viene aggiunto dall'estensione.Non possibile che una sottoclasse, ridefinisca variabili e funzioni di una classe madre. Una classe estesadipende sempre da una singola classe di base: l'eredit multipla non supportata. Le classi si estendonousando la parola chiave 'extends'.

    Qui viene definita una classe Named_Cart che ha tutte le funzioni e variabili di Cart pi la variabile$owner e la funzione set_owner(). Viene creato un carrello con nome con il metodo usato inprecedenza, in pi la classe estesa permette di settare o leggere il nome del carrello. Si possono usarevariabili e funzioni sia di Cart che della sua estensione:

    La relazione mostrata chiamata relazione "genitore-figlio". Si crea una classe di base, poi utilizzandoextends si crea una nuova classe basata sulla classe genitore: la classe figlia. Successivamente si pu usare laclasse figlia come classe base per un'altra classe.Nota: Una classe deve essere definita prima di essere utilizzata! Se si vuole la classe Named_Cart cheestende la classe Cart, bisogna definire una classe Cart prima. Se si vuole creare un'altra classe chiamataYellow_named_cart basata sulla classe Named_Cart bisogna definire la classe Named_Cart prima.

    Per farla breve: l'ordine di definizione delle classi importante.CostruttoriI costruttori sono funzioni che esistono in una classe e che sono chiamate automaticamente quando si creauna nuova istanza di una classe con new. In PHP 3, una funzione si trasforma in un costruttore quando ha lostesso nome di una classe. In PHP 4, una funzione diventa un costruttore, quando ha lo stesso nome di unaclasse ed definita all'interno della classe stessa - la differenza sottile, ma cruciale.

  • 8/6/2019 Manuale Essenziale PHP

    20/39

    Manuale essenziale PHP-MySql

    Questo codice definisce una classe Auto_Cart, che non altro che Cart pi un costruttore che inizializzail carrello con una occorrenza dell'articolo numero "10" ogni volta che un nuovo Auto_Cart creato connew. I costruttori possono avere degli argomenti, e gli argomenti possono essere facoltativi, questo li rendemolto versatili. Per poter usare una classe senza specificare parametri, tutti i parametri del costruttore devonoessere resi facoltativi con valori di default.

    serialize()

    Loperazione di serializzazione di un oggetto restituisce una stringa che contiene una rappresentazione incaratteri di tutti i valori che possono essere memorizzati in PHP. unserialize() pu usare questa stringaper ricreare dai valori variabili utilizzabili.Usando serialize() per salvare un oggetto si salveranno tutte le variabili dell'oggetto. Le funzionidell'oggetto non sono salvate, viene salvato solo il nome della classe.

    Per potere usare unserialize() su un oggetto, la classe dell'oggetto deve essere definita. Cio se aveteun oggetto $a della classe A su una pagina di nome page1.php e usate serialize(), otterrete unastringa che si riferisce alla classe A e contiene tutti i valori delle variabili contenute in $a. Se desiderate poterdeserializzare l'oggetto in un'altra pagina chiamata page2.php, dovete ricreare $a dalla classe A, ladefinizione della classe A perci deve essere presente nella pagina page2.php. Questo pu essere fatto peresempio memorizzando la definizione della classe A in un file che viene incluso sia in page1.php che inpage2.php.

  • 8/6/2019 Manuale Essenziale PHP

    21/39

    Manuale essenziale PHP-MySql

    $s = implode("", @file("store"));

    $a = unserialize($s);

    // ora usiamo la function show_one() dell'oggetto $a.

    $a->show_one();

    ?>

    Se state usando le sessioni ed usate session_register() per registrare oggetti, questi oggetti vengonoserializzati automaticamente alla fine di ogni pagina PHP e sono deserializzate automaticamente su ognipagina della sessione. Ci significa che gli oggetti possono mostrarsi in ogni pagina e che sono parteintegrante della sessione.Si suggerisce vivamente di includere le definizioni delle classi degli oggetti registrati su tutte le pagine,anche se le classi non sono usate su tutte le pagine. Se un oggetto viene deserializzato senza la relativadefinizione della classe, perder l'associazione ad essa e si trasformer in un oggetto della classe stdClasssenza nessuna funzione disponibile, diventando inutile.Cos se nell'esempio qui sopra $a diventasse parte di una sessione e fosse registrato consession_register("a"), dovreste includere un file classa.inc su tutte le pagine in cui valida lasessione, non soltanto nella page1.php e nella page2.php.Le funzioni magiche __sleep e __wakeup

    serialize() controlla se la vostra classe ha una funzione dal nome magico__sleep. In casoaffermativo, quella funzione viene eseguita prima di qualsiasi serializzazione. La funzione pu pulirel'oggetto e restituire un array con i nomi di tutte le variabili di quell' oggetto che dovrebbero essereserializzate.Si intende usare__sleep quando chiudendo un collegamento ad un database l'oggetto pu avere datipendenti e l'oggetto ha bisogno di essere ripulito. Inoltre, la funzione utile se avete oggetti molto grandi chenon devono essere salvati completamente.Per contro, unserialize() controlla per vedere se c' nella classe una funzione dal nome magico__wakeup. Se presente questa funzione pu ricostruire qualunque risorsa che l'oggetto aveva.

    L'intento di__wakeup quello di ristabilire le connessioni ai database che possono esser state persi durantela serializzazione ed effettuare altre mansioni reinizializzazione.

    Confronto di oggetti in PHP 4In PHP 4, gli oggetti sono confrontati semplicemente, cio: due istanze di oggetto sono uguali se hanno glistessi attributi e valori, e sono istanze della stessa classe. Questa regola regola applicata anche nelconfronto di due oggetti utilizzando l'operatore di identit (===).

  • 8/6/2019 Manuale Essenziale PHP

    22/39

    Manuale essenziale PHP-MySql

    $this->flag = false;

    }

    }

    $o = new Flag();

    $p = new Flag(false);

    $q = new Flag();

    $r = new SwitchableFlag();

    echo "Confronto di istanze create con gli stessi parametri\n";

    compareObjects($o, $q);

    echo "\nConfronto di istanze create con parametri diversi\n";

    compareObjects($o, $p);

    echo "\nConfronto di un'istanza della classe genitore con una

    sottoclasse\n";

    compareObjects($o, $r);

    ?>

    Si ha: Confronto di istanze create con gli stessi parametrio1 == o2 : TRUE

    o1 != o2 : FALSE

    o1 === o2 : TRUEo1 !== o2 : FALSE

    Confronto di istanze create con parametri diversio1 == o2 : FALSE

    o1 != o2 : TRUE

    o1 === o2 : FALSE

    o1 !== o2 : TRUE

    Confronto di un'istanza della classe genitore con una sottoclasseo1 == o2 : FALSE

    o1 != o2 : TRUE

    o1 === o2 : FALSE

    o1 !== o2 : TRUE

    Questo l'output che si ottiene secondo le regole di confronto descritte sopra. Solo le istanze con gli stessivalori per gli attributi e derivanti dalla stessa classe sono considerate uguali ed identiche.

    Funzioni MySQLCon PHP 4, il supporto a MySQL sempre abilitato; se non si specifica l'opzione di configurazione,vengono usate le librerie incluse.La versione per Windows di PHP ha gi compilato il supporto per questo modulo. Non occorre caricarealcun modulo addizionale per potere utilizzare queste funzioni.

    Configurazione

    Il comportamento di queste funzioni influenzato dalle impostazioni di php.ini.

    Nome Predefinito Modificabile inmysql.allow_persistent "On" PHP_INI_SYSTEMmysql.max_persistent "-1" PHP_INI_SYSTEMmysql.max_links "-1" PHP_INI_SYSTEMmysql.default_port NULL PHP_INI_ALLmysql.default_socket NULL PHP_INI_ALLmysql.default_host NULL PHP_INI_ALLmysql.default_user NULL PHP_INI_ALLmysql.default_password NULL PHP_INI_ALLmysql.connect_timeout "0" PHP _INI_SYSTEM

    mysql.allow_persistent boolean

    Determina se consentire le connessioni persistenti a MySQL.mysql.max_persistent integer

    Il i di i i i i M SQL

  • 8/6/2019 Manuale Essenziale PHP

    23/39

    Manuale essenziale PHP-MySql

    mysql.max_links integer

    Il numero massimo di connessioni MySQL per processo, incluse le connessioni persistenti.mysql.default_port string

    Il numero di porta TCP predefinito da usare per connettersi ad un server di database se nessuna altra portaviene specificata. Se nessun valore predefinito e specificato, la porta sar ottenuta dalla variabile d'ambienteMYSQL_TCP_PORT, dalla voce mysql-tcp in /etc/services o dalla costante MYSQL_PORT in fase di

    compilazione, in questo ordine. Win32 user solo la costante MYSQL_PORT.mysql.default_socket string

    Il nome del socket predefinito da usare per connettersi ad un server di database locale se nessun altro nomedi socket viene specificato.mysql.default_host string

    L'host di default del server da usare per connettersi al server di database se nessun altro host vienespecificato. Non si applica in safe mode.mysql.default_user string

    Il nome utente predefinito da usare per connettersi al server di database se nessun altro nome vienespecificato. Non si applica in safe mode.mysql.default_password string

    La password predefinita da usare per connettrsi al server di database se nessuna altra password vienespecificata. Non si appplica in safe mode.mysql.connect_timeout integer

    Timeout di connessione in secondi.

    Tipi di risorse

    Ci sono due tipi di risorsa usati nel modulo MySQL. Il primo l'identificativo di connessione per unaconnessione ad un database, del secondo tipo sono le risorse che contengono i risultati di una query.

    Costanti Predefinite

    Costante Descrizione

    MYSQL_CLIENT_COMPRESS Usa la compressione del protocolloMYSQL_CLIENT_IGNORE_SPACE Consente lo spazio dopo i nomi delle funzioniMYSQL_CLIENT_INTERACTIVE Lascia trascorrere interactive_timeout secondi (anzich

    wait_timeout) di inattivit prima di chiudere la connessione

    La funzione mysql_fetch_array() usa una costante per i diversi tipi di array risultato. Sono definite leseguenti costanti:

    Costante DescrizioneMYSQL_ASSOC Le colonne sono restituite in un array avente il nome del campo come indice dell'arrayMYSQL_BOTH Le colonne sono restituite in un array avente sia un indice numerico sia un indice

    costituito dal nome del campoMYSQL_NUM Le colonne sono restituite in un array avente un indice numerico per i campi. Questo

    indice inizia da 0, il primo campo nel risultato

    Questo esempio mostra come connettersi, eseguire una query, stampare le righe risultanti e disconnettersi daldatabase MySQL.

  • 8/6/2019 Manuale Essenziale PHP

    24/39

    Manuale essenziale PHP-MySql

    print "\n";

    while ($linea = mysql_fetch_array($risultato, MYSQL_ASSOC)) {

    print "\t\n";

    foreach ($linea as $valore_colonna) {

    print "\t\t$valore_colonna\n";

    }

    print "\t\n";

    }

    print "\n";

    /* Liberazione delle risorse del risultato */

    mysql_free_result($risultato);

    /* Chiusura della connessione */

    mysql_close($connessione);

    ?>

    Gestione della sessioneIl supporto delle sessioni in PHP consiste nel mantenere certi dati attraverso accessi successivi. Per esempio,una volta autenticato un utente con Nome e Password validi per laccesso ad alcune tabelle MySql, questevariabili possono essere conservate per tutta la sessione (altrimenti bisognerebbe chiederle ogni volta cheaccede al database)Al visitatore che accede al vostro sito web viene assegnato un id unico, il cosiddetto id di sessione. Questoviene registrato in un cookie sul lato utente o propagato tramite l'URL.Il supporto delle sessioni vi permette di registrare numeri arbitrari di variabili che vengono preservatesecondo richiesta. Quando un visitatore accede al vostro sito, PHP controller automaticamente (sesession.auto_start settato a 1) o su vostra richiesta (esplicitamente tramite session_start() o implicitamentetramite session_register()) se uno specifico id di sessione sia stato inviato con la richiesta. In questo caso , ilprecedente ambiente salvato viene ricreato.Tutte le variabili registrate vengono serializzate dopo che la richiesta finita. Le variabili registrate che nonsono definite vengono marcate come indefinite. All'accesso successivo, queste non vengono definite dalmodulo di sessione fino a quando l'utente non le definisce pi tardi.Da PHP 4.1.0, $_SESSION disponibile come variabile globale proprio come $_POST, $_GET,$_REQUEST e cos via.

    Perch la variabile $_SESSION sia utilizzabile bisogna modificare il file php.ini nella directory WINDOWS

    (per chi usa questo sistema operativo) settando session.auto_start =1 e creando, se non esiste, unadirectory temp dove vengono registrate le variabili di sessione.

    Opzioni di configurazione nel file php.ini

    Riportiamo alcune tra le opzioni di configurazione del file php.inisession.save_handler definisce il nome dell'handler che usato per archiviare e rilasciare i datiassociati a una sessione. Di default files.session.save_path definisce l'argomento che passato all'handler di sessione. Se scegliete handlerfiles di default, questo il percorso dove i files vengono creati. Di default /tmp. Se la profondit delpercorso session.save_path pi di 2, l'accumulo (gc) non sar effettuato.Attenzione

    Se lasciate questo settato a directory leggibile da tutti /tmp (il default), altri utenti potrebbero essere in gradodi dirottare le sessioni prendendo la lista dei files in quella directory.

  • 8/6/2019 Manuale Essenziale PHP

    25/39

    Manuale essenziale PHP-MySql

    session.name specifica il nome della sessione che usata come nome del cookie. Dovrebbe conteneresolo caratteri alfanumerici. Di default PHPSESSID.session.auto_start specifica se il modulo di sessione inizia una sessione automaticamente surichiesta iniziale. Di default 0 (disattivata).session.cookie_lifetime specifica il tempo di vita in secondi del cookie che viene mandato al

    browser. Il valore 0 significa "fino a che il browser viene chiuso". Di default 0.session.gc_maxlifetime specifica il numero di secondi dopo i quali i dati saranno considerati'spazzatura' e cancellati.session.use_cookies specifica se il modulo user i cookies per archiviare l'id di sessione sul latoclient. Di default 1 (attivo).session.cookie_path specifica il percorso da stabilire in session_cookie. Di default /.

    Funzioni per gestire la sessione

    bool session_destroy ( void )

    session_destroy() distrugge tutti i dati associati alla sessione corrente. Non desetta nessuna delle variabiliglobali associate alla sessione o desetta il cookie di sessione.Questa funzione ritorna TRUE in caso di successo e FALSE in caso di fallimento nel distruggere i dati disessione.

    array session_get_cookie_params ( void )

    La funzione session_get_cookie_params() restituisce un array con le informazioni sul cookie di sessionecorrente, l'array contiene i seguenti elementi:"lifetime" - La durata del cookie."path" - Il percorso dove l'informazione archiviata."domain" - Il dominio di validit del cookie."secure" - Il cookie dovrebbe essere spedito solo attraverso connessioni sicure. (Questo elemento statoaggiunto in PHP 4.0.4.)string session_id ( [string id])

    session_id() restituisce l'id di sessione per la sessione corrente. Se id specificato, sostituir l'id di sessionecorrente.string session_name ( [string name])

    session_name() ritorna il nome della sessione corrente. Se name specificato, il nome della sessione corrente

    viene cambiato al suo valore.void session_set_cookie_params ( int lifetime [, string path [, stringdomain]])

    Imposta i parametri del cookie definiti nel file php.ini. L'effetto di questa funzione dura solo per la duratadello script.void session_unset ( void )

    La funzione session_unset() libera tutte le variabili di sessione correntemente registrate.

    Funzioni MySql

    int mysql_affected_rows ( [resource identificativo_connessione])

    restituisce il numero di righe coinvolte nell'ultima query INSERT, UPDATE o DELETE associata a

    identificativo_connessione. Se l'identificativo di connessione non specificato, viene considerata l'ultimaconnessione aperta con mysql_connect().Se l'ultima query era una query DELETE senza clausola WHERE, tutti i record saranno cancellati dalla

  • 8/6/2019 Manuale Essenziale PHP

    26/39

    Manuale essenziale PHP-MySql

    Usando UPDATE, MySQL non aggiorner le colonne nelle quali il nuovo valore uguale al vecchio valore.Questo crea la possibilit che mysql_affected_rows() pu non uguagliare realmente il numero dirighe corrispondenti ma solo il numero di righe effettivamente coinvolte dalla query.mysql_affected_rows() non funziona con l'istruzione SELECT ma solo con le istruzioni chemodificano i record. Per ricavare il numero di righe restituite da SELECT, usare mysql_num_rows().Se l'ultima query fallisce, questa funzione restituisce -1.Query di eliminazione

  • 8/6/2019 Manuale Essenziale PHP

    27/39

    Manuale essenziale PHP-MySql

    Il parametro server pu anche includere un numero di porta. Es. "hostname:porta" o un percorso ad un socketes. ":/percorso/al/socket" per il localhost.Se si fa una seconda chiamata a mysql_connect() con gli stessi argomenti, nessuna nuova connessionesar stabilita, ma sar restituito l'identificativo della connessione gi aperta. Il parametronuova_connessione modifica questo comportamento e fa s che mysql_connect() apra sempre unanuova connessione, anche se mysql_connect() era stata chiamata prima con gli stessi parametri. ilparametro client_flags pu essere combinato con le costanti MYSQL_CLIENT_COMPRESS,MYSQL_CLIENT_IGNORE_SPACE o MYSQL_CLIENT_INTERACTIVE.Nota: Il parametro nuova_connessione stato introdotto dal PHP 4.2.0Il parametro client_flags stato introdotto dal PHP 4.3.0La connessione al server sar chiusa prima della fine dell'esecuzione dello script, a meno che questa non siaprecedentemente chiusa esplicitamente richiamando mysql_close().

    bool mysql_data_seek ( resource identificativo_risultato, intnumero_riga)

    Restituisce TRUE in caso di successo, FALSE in caso di fallimento.mysql_data_seek() muove il puntatore di riga interno del risultato MySQL associato all'identificativo

    specificato per puntare ad un determinato numero di riga. La successiva chiamata a mysql_fetch_row()dovrebbe restituire questa riga.numero_riga inizia da 0. numero_riga dovrebbe essere un valore nell'intervallo che va da 0 amysql_num_rows - 1.Nota: La funzione mysql_data_seek() pu essere usata solo insieme a mysql_query(), non conmysql_unbuffered_query().

    string mysql_db_name ( resource risultato, int riga [, mixed campo])

    mysql_db_name() accetta come primo paramentro il puntatore al risultato dalla chiamata amysql_list_dbs(). Il parametro riga un indice compreso nell'intervallo del risultato.Se intercorre un errore, viene restituito FALSE. Usare mysql_errno() e mysql_error() perdeterminare la natura dell'errore.

  • 8/6/2019 Manuale Essenziale PHP

    28/39

    Manuale essenziale PHP-MySql

    echo mysql_db_name($lista_db, $i) . "\n";

    $i++;

    }

    ?>

    int mysql_errno ( [resource identificativo_connessione])

    Restituisce il numero di errore dall'ultima funzione MySQL, oppure 0 (zero) se nessun errore intercorso.Gli errori ritornano dal database MySQL senza visualizzare i messaggi di avvertimento. Usando invecemysql_errno() si recupera il codice di errore. Notare che questa funzione restituisce solo il codice erroredella pi recente funzione MySQL eseguita, quindi se la si vuole usare, assicurarsi di controllare il valoreprima di chiamare un'altra funzione MySQL.

    L'esempio riportato sopra dovrebbe produrre il seguente output:1049: Unknown database 'db_inesistente'

    1146: Table 'kossu.tabella_inesistente' doesn't exist

    Nota: Se l'argomento opzionale specificato la connessione indicata viene usata per recuperare il codiced'errore. Altrimenti viene usata l'ultima connessione aperta.

    string errore_mysql ( [resource identificativo_connessione])

    Restituisce il testo dell'errore dall'ultima funzione MySQL, oppure '' (la stringa vuota) se nessun erroreintercorre.Gli errori ritornano dal database MySQL senza visualizzare i messaggi di avvertimento. Si usa invecemysql_error() per recuperare il testo dell'errore. Notare che questa funzione restituisce solo il testodell'errore della pi recente funzione MySQL eseguita (ad esclusione di mysql_error() emysql_errno()), quindi se la si vuole usare, assicurarsi di controllare il valore prima di richiamareun'altra funzione MySQL.

    L'esempio riportato sopra dovrebbe produrre il seguente output:1049: Unknown database 'db_inesistente'

    1146: Table 'kossu.tabella_inesistente' doesn't exist

    Nota: Se l'argomento opzionale specificato la connessione indicata viene usata per recuperare il codicederrore. Altrimenti viene usata l'ultima connessione aperta.

    array mysql_fetch_array ( resource risultato [, int tipo_risultato])

    Restituisce un array che corrisponde alla riga caricata o FALSE se non ci sono pi righe.mysql_fetch_array() una versione estesa di mysql_fetch_row(). Oltre a memorizzare i dati

    del risultato in array con indice numerico, questa li memorizza anche con indici associativi usando i nomi deicampi come chiavi.

  • 8/6/2019 Manuale Essenziale PHP

    29/39

    Manuale essenziale PHP-MySql

    Se due o pi colonne del risultato hanno gli stessi nomi di campo, l'ultima colonna avr la precedenza. Peraccedere alle altre colonne con lo stesso nome, si deve usare l'indice numerico della colonna o farne un alias.Per le colonne-alias, non si pu accedere al contenuto con il nome della colonna originale (in questo esempiosi usa 'campo').Il secondo argomento opzionale tipo_risultato in mysql_fetch_array() una costante e pu assumerei seguenti valori: MYSQL_ASSOC, MYSQL_NUM e MYSQL_BOTH. Questa caratteristica stata aggiuntanel PHP 3.0.7. MYSQL_BOTH il valore predefinito per questo argomento.Usando MYSQL_BOTH, si ottiene un array con entrambe gli indici (associativo e numerico). UsandoMYSQL_ASSOC, si ottengono solo gli indici associativi (stesso funzionamento dimysql_fetch_assoc()), usando MYSQL_NUM, si ottengono solo gli indici numerici (stessofunzionamento di mysql_fetch_row()).

    array mysql_fetch_assoc ( resource risultato)

    Restituisce un array associativo che corrisponde alla riga caricata o FALSE se non ci sono pi righe.mysql_fetch_assoc() equivalente alla chiamata di mysql_fetch_array() conMYSQL_ASSOC come secondo parametro opzionale. Questa restituisce solo un array associativo. Questo il modo in cui mysql_fetch_array() funzionava originalmente. Se necessario l'indice numerico alposto di quello associativo, usare mysql_fetch_array().Se due o pi colonne del risultato hanno gli stessi nomi di campo, l'ultima colonna avr la precedenza. Peraccedere alle altre colonne con lo stesso nome, si deve accedere al risultato con l'indice numerico usandomysql_fetch_row() oppure aggiungere degli alias. Vedere l'esempio nella descrizione dimysql_fetch_array() per quanto concerne gli alias.

  • 8/6/2019 Manuale Essenziale PHP

    30/39

    Manuale essenziale PHP-MySql

    // Nota: Se si mette extract($riga); all'interno del seguente ciclo,

    // si creeranno $id_utente, $nome_intero e $stato_utente

    while ($riga = mysql_fetch_assoc($risultato)) {

    echo $riga["id_utente"];

    echo $riga["nome_intero"];

    echo $riga["stato_utente"];

    }

    mysql_free_result($risultato);

    ?>

    object mysql_fetch_field ( resource risultato [, int indice_campo])

    Restituisce un oggetto contenente le informazioni di un campo.mysql_fetch_field() pu essere usata al fine di ottenere informazioni circa i campi di un determinatorisultato di una query. Se l'indice del campo non specificato, il successivo campo non ancora recuperato damysql_fetch_field() viene considerato.Le propriet dell'oggetto sono:name - nome della colonnatable nome della tabella a cui appartiene la colonna

    max_length massima lunghezza della colonnanot_null 1 se la colonna non pu essere NULLprimary_key 1 se la colonna una chiave primariaunique_key 1 se la colonna una chiave unicamultiple_key 1 se la colonna una chiave non-unicanumeric 1 se la colonna numericablob 1 se la colonna un BLOBtype il tipo della colonnaunsigned 1 se la colonna senza segnozerofill 1 se la colonna completata da zeri

  • 8/6/2019 Manuale Essenziale PHP

    31/39

    Manuale essenziale PHP-MySql

    mysql_free_result($risultato);

    ?>

    array mysql_fetch_lengths ( resource risultato)

    Restituisce un array che corrisponde alle lunghezze di ogni campo nell'ultima riga caricata damysql_fetch_row() oppure FALSE in caso di errore.mysql_fetch_lengths() memorizza le lunghezze di ogni colonna dell'ultima riga restituita damysql_fetch_row(), mysql_fetch_array() e mysql_fetch_object() in un array,iniziando con un indice pari a 0.

    object mysql_fetch_object ( resource risultato)

    Restituisce un oggetto con propriet che corrispondono alla riga caricata oppure FALSE se non ci sono pirighe.mysql_fetch_object() simile a mysql_fetch_array(), con una differenza: viene restituito unoggetto invece che un array. Indirettamente, questo significa che si ha solo accesso ai dati attraverso i nomidei campi e non attraverso il loro indice (i numeri sono nomi di propriet illeciti).

    array mysql_fetch_row ( resource risultato)

    Restituisce un array che corrisponde ad una riga caricata oppure FALSE se non ci sono pi righe.mysql_fetch_row() carica una riga di dati dal risultato associato all'identificativo specificato. La riga restituita come un array. Ogni colonna del risultato memorizzata in un indice dell'array, partendodall'indice 0.La susseguente chiamata a mysql_fetch_row() restituisce la successiva riga nell'intervallo del risultatooppure FALSE se non ci sono pi righe.

    string mysql_field_flags ( resource risultato, int indice_campo)

    mysql_field_flags() restituisce i flag del campo specificato. I flag sono restituiti come singole paroleper flag separate da un singolo spazio, in modo che sia possibile suddividere il valore restituito usandoexplode().I seguenti flag sono restituiti, se la versione di MySQL abbastanza aggiornata da supportarli: "not_null","primary_key", "unique_key", "multiple_key", "blob", "unsigned", "zerofill", "binary", "enum","auto_increment", "timestamp".

    int mysql_field_len ( resource risultato, int indice_campo)

    mysql_field_len() restituisce la lunghezza del campo specificato.

    string mysql_field_name ( resource risultato, int indice_campo)

    mysql_field_name() restituisce il nome del campo specificato dall'indice. risultato deve essere unidentificativo di risultato valido e indice_campo lo spiazzamento numerico del campo.Nota: indice campo inizia da 0.

  • 8/6/2019 Manuale Essenziale PHP

    32/39

    Manuale essenziale PHP-MySql

    L'esempio riportato sopra dovrebbe produrre il seguente output:id_utente

    password

    int mysql_field_seek ( resource risultato, int indice_campo)

    Esegue il seek ad uno specifico indice di campo. Se la successiva chiamata a mysql_fetch_field()non include un indice di campo, quello specificato in mysql_field_seek() viene restituito.

    string mysql_field_table ( resource risultato, int indice_campo)

    Ottiene il nome della tabella in cui si trova il campo specificato.

    string mysql_field_type ( resource risultato, int indice_campo)

    mysql_field_type() simile alla funzione mysql_field_name(). Gli argomenti sono identici,ma viene restituito il tipo del campo. Il tipo del campo sar uno dei seguenti: "int", "real", "string", "blob" edaltri come dettagliati nella Documentazione di MySQL.

  • 8/6/2019 Manuale Essenziale PHP

    33/39

    Manuale essenziale PHP-MySql

    mysql_free_result() libera tutta la memoria associata all'identificativo del risultato.mysql_free_result() deve essere richiamata solo se si preoccupati sulla quantit di memoria usatadalle query che restituiscono dei grandi risultati. Tutta la memoria associata al risultato automaticamenteliberata al termine dell'esecuzione dello script.Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

    string mysql_get_client_info ( void )

    mysql_get_client_info() restituisce una stringa che rappresenta la versione della libreria client.

    L'esempio riportato sopra dovrebbe produrre il seguente output:Informazioni sul client MySQL: 3.23.39

    string mysql_get_host_info ( [resource identificativo_connessione])

    mysql_get_host_info()restituisce una stringa che descrive il tipo di connessione in uso peridentificativo_connessione, includendo il nome dell'host del server. Se identificativo_connessione omesso,sar usata l'ultima connessione aperta.

  • 8/6/2019 Manuale Essenziale PHP

    34/39

    Manuale essenziale PHP-MySql

    int mysql_insert_id ( [resource identificativo_connessione])

    mysql_insert_id() restituisce l'identificativo generato per una colonna AUTO_INCREMENT dalprecedente query INSERT usando lo specifico identificativo_connessione. Se identificativo_connessione non specificato, viene considerata l'ultima connessione aperta.mysql_insert_id() restituisce 0 se la precedente query non ha generato un valoreAUTO_INCREMENT. Se necessario salvare il valore per usarlo in seguito, assicurarsi di richiamaremysql_insert_id() immediatamente dopo la query che ha generato il valore.Nota: Il valore della funzione SQL LAST_INSERT_ID() di MySQL contiene sempre il pi recente valoreAUTO_INCREMENT generato e non azzerato dalle query.Attenzionemysql_insert_id() converte il tipo restituito dalla funzione nativa dell'API C di MySQLmysql_insert_id() al tipo long (chiamata int nel PHP). Se la colonna AUTO_INCREMENTappartiene al tipo BIGINT, il valore restituito da mysql_insert_id() sar inesatto. In questo caso si usila funzione SQL di MySQL LAST_INSERT_ID() in una query SQL.

  • 8/6/2019 Manuale Essenziale PHP

    35/39

    Manuale essenziale PHP-MySql

    campo1campo2campo3...resource mysql_list_tables ( string database [, resourceidentificativo_connessione])

    mysql_list_tables() accetta un nome di database e restituisce un risultato puntatore in modo moltosimile alla funzione mysql_query(). Usare la funzione mysql_tablename() per esplorare questorisultato puntatore o qualsiasi funzione per i risultati delle tabelle, come mysql_fetch_array().Il parametro database il nome del database da cui recuperare la lista di tabelle. in caso di errore,mysql_list_tables() restituisce FALSE.

    int mysql_num_fields ( resource risultato)

    mysql_num_fields() restituisce il numero di campi in un risultato.Vedere anche: mysql_select_db(), mysql_query(), mysql_fetch_field() emysql_num_rows().

    int mysql_num_rows ( resource risultato)

    mysql_num_rows() restituisce il numero di righe in un risultato. Questo comando valido solo per leistruzioni SELECT. Per recuperare il numero di righe coinvolte dalle query INSERT, UPDATE o DELETE,usare mysql_affected_rows().

    resource mysql_pconnect ( [string server [, string nome_utente [, string

    password [, int flag_client]]]])

    Restituisce un identificativo di connessione MySQL valido in caso di successo oppure FALSE in caso dierrore.

    mysql_pconnect() stabilisce una connessione ad un server MySQL. I seguenti valori predefiniti sonousati per i parametri opzionali mancanti: server = 'localhost:3306', nome_utente = nome dell'utenteprprietario del processo server e password = password vuota Il parametro flag client pu essere una

  • 8/6/2019 Manuale Essenziale PHP

    36/39

    Manuale essenziale PHP-MySql

    combinazione delle costanti MYSQL_CLIENT_COMPRESS, MYSQL_CLIENT_IGNORE_SPACE oMYSQL_CLIENT_INTERACTIVE.Il parametro server pu includere una numero di porta. Es. "hostname:porta" o un percorso ad un socket es.":/percorso/a/socket" per il localhost.Nota: Il supporto per ":porta" stato aggiunto nel PHP 3.0B4.Il supporto per ":/percorso/a/socket" stato aggiunto nel PHP 3.0.10.mysql_pconnect() agisce in modo molto simile a mysql_connect() con due differenze principali. quando si connette, la funzione tenta innanzitutto di trovare una connessione (persistente) gi aperta

    avente gli stessi host, username e password. Se viene trovata una connessione, viene restituito unidentificativo a questa anzich aprirne una nuova.

    la connessione al server SQL non sar chiusa quando l'esecuzione dello script termina. La connessionerimane invece aperta per usi futuri (mysql_close() non chiuder le connessioni stabilite damysql_pconnect()).

    Il parametro opzionale flag_client diventato disponibile nel PHP 4.3.0.Questo tipo di link perci chiamato 'persistente'.Attenzione!L'uso di connessioni persistenti pu richiedere un po' di messa a punto delle configurazioni di Apache e

    MySQL per assicurarsi di non eccedere il numero di connessioni consentite da MySQL.bool mysql_ping ( [resource identificativo_connessione])

    mysql_ping() controlla se una connessione al server funziona o meno. Se questa caduta, viene tentatauna riconnessione automatica. Questa funzione pu essere usata dagli script che rimangono inattivi per unlungo periodo per controllare se il server ha chiuso la connessione o meno e riconnettersi se necessario.mysql_ping() restituisce TRUE se la connessione al server funzionante, altrimenti FALSE.

    resource mysql_query ( string query [, resource

    identificativo_connessione [, int modo_risultato]])

    mysql_query() invia una query al database attualmente attivo sul server associato all'identificativo diconnessione specificato. Se identificativo_connessione non specificato, viene considerata l'ultima

    connessione aperta. Se nessuna connessione aperta, la funzione prova a stabilire una connessione come semysql_connect() fosse richiamata senza argomenti ed usa questa.Il paramentro opzionale modo_risultato pu essere MYSQL_USE_RESULT e MYSQL_STORE_RESULT.Il valore predefinito MYSQL_STORE_RESULT, cos il risultato bufferato. Vedere anchemysql_unbuffered_query() per la controparte di questo comportamento.Nota: La stringa della query non dovrebbe terminare con un punto e virgola.Solo per le istruzioni SELECT, SHOW, EXPLAIN o DESCRIBE mysql_query() restituisce unidentificativo di risorsa o FALSE se la query non stata eseguita correttamente. Per altri tipi di istruzioniSQL, mysql_query() restituisce TRUE in caso di successo e FALSE in caso di errore. Un valorerestituito diverso da FALSE indica che la query era lecita ed stata eseguita dal server. Questo non indicaniente riguardo il numero di righe coinvolte o restituite. assolutamente possibile che una query abbia

    successo ma che non coinvolga o restituisca nessuna riga.mysql_query() fallisce e restituisce FALSE anche se non si hanno i permessi per accedere alle tabellecui la query fa riferimento.Assumendo che la query abbia successo, si pu richiamare mysql_num_rows() per scoprire quante righesono state restituite da un'istruzione SELECT o mysql_affected_rows() per scoprire quante righesono state coinvolte da un'istruzione DELETE, INSERT, REPLACE o UPDATE.Solo per le istruzioni SELECT, SHOW, DESCRIBE o EXPLAIN, mysql_query() restituisce un nuovoidentificativo di risultato che si pu passare a mysql_fetch_array() e ad altre funzioni che sioccupano dei risultati delle tabelle. Quando si conclude il trattamento del risultato, si possono liberare lerisorse associate ad esso richiamando mysql_free_result() . Comunque la memoria sar liberataautomaticamente Al termine dell'esecuzione dello script.

    mixed mysql_result ( resource risultato, int campo [, mixed campo])

    mysql_result() restituisce i contenuti di una cella da un risultato MySQL. L'argomento campo pul'i di il d l il d ll b ll d il d l i d

  • 8/6/2019 Manuale Essenziale PHP

    37/39

    Manuale essenziale PHP-MySql

    (nome_tabella.nome_campo). Se il nome della colonna ha un alias ('select foo as bar from...'), usare l'alias alposto del nome della colonna.Quando si lavora con un risultato di grandi dimensioni, si dovrebbero considerare l'uso delle funzioni checaricano l'intera riga. Poich queste funzioni restituiscono i contenuti di celle multiple in una chiamata afunzione, sono MOLTO pi veloci di mysql_result(). Notare anche che specificare un indice numericoper l'argomento campo molto pi veloce che specificare un argomento del tipo nome_di_campo onome_tabella.nome_campo.Le chiamate a mysql_result() non dovrebbero essere mescolate con chiamate ad altre funzioni chehanno a che fare con i risultati.Alternative raccomandate per alte prestazioni: mysql_fetch_row(), mysql_fetch_array() emysql_fetch_object().

    bool mysql_select_db ( string nome_database [, resourceidentificativo_connessione])

    Restituisce TRUE in caso di successo, FALSE in caso di fallimento.mysql_select_db() imposta il database attualmente attivo sul server associato all'identificativo diconnessione specificato. Se nessun identificativo di connessione specificato, viene considerata l'ultima

    connessione aperta. Se nessuna connessione aperta, la funzione prover a stabilire una connessione come semysql_connect() fosse richiamata senza argomenti ed user questa.Ogni chiamata successiva a mysql_query() sar fatta sul database attivo.Vedere anche: mysql_connect(), mysql_pconnect() e mysql_query().

    string mysql_stat ( [resource identificativo_connessione])

    mysql_stat() restituisce l'attuale stato del server.Nota: mysql_stat() attualmente restituisce solo le seguenti informazioni: uptime, thread, query, tabelleaperte, tabelle svuotate e query al secondo. Per una lista completa delle altre variabili di stato si usi ilcomando SQL SHOW STATUS.

    L'esempio riportato sopra dovrebbe produrre il seguente output: Array(

    [0] => Uptime: 5380[1] => Threads: 2[2] => Questions: 1321299[3] => Slow queries: 0[4] => Opens: 26

    [5] => Flush tables: 1[6] => Open tables: 17[7] => Queries per second avg: 245.595

    )

    string mysql_tablename ( resource risultato, int i)

    mysql_tablename() prende il puntatore risultato dalla funzione mysql_list_tables() come unindice intero e restituisce il nome di una tabella. La funzione mysql_num_rows() pu essere usata perdeterminare il numero di tabelle nel risultato puntatore. Usare la funzione mysql_tablename() peresplorare questo risultato puntatore o qualsiasi funzione per i risultati delle tabelle, comemysql_fetch_array

  • 8/6/2019 Manuale Essenziale PHP

    38/39

    Manuale essenziale PHP-MySql

    printf ("Tabella: %s\n", mysql_tablename($risultato, $i));

    mysql_free_result($risultato);

    ?>

    int mysql_thread_id ( [resource identificativo_connessione])

    mysql_thread_id() restituisce l'attuale thread ID. Se La connessione persa a ci si riconnette con

    mysql_ping(), il thread ID cambia. Questo significa che non si dovrebbe ottenere il thread ID ememorizzarlo per impieghi successivi. Si dovrebbe rilevare il thread ID quando necessario.

  • 8/6/2019 Manuale Essenziale PHP

    39/39

    Titolo: Manuale essenziale PHP

    Autore: Luciano Viviani

    Email: [email protected]

    Classe: TERZA INFORMATICA SERALE (3IS)

    Anno scolastico: 2003/2004

    Scuola: Itis EuganeoVia Borgofuro, 6Via Borgofuro 6 - 35042 Este (PD) - ItalyTelefono 0429.21.16 - 0429.34.72Fax 0429.41.86http://[email protected]

    Note legali: Nessuna restrizione all'utilizzo