Al fine di rendere queste funzioni disponibili, si deve compilare PHP con
il supporto MySQL.
Usando l'opzione di configurazione --with-mysql[=DIR]
si abilita PHP l'accesso ai
database MySQL.
In PHP 4, il parametro --with-mysql è abilitato per default.
Per disabilitarlo si può utilizzare
--without-mysql .
Inoltre in PHP 4, se si abilita MySql senza indicare il percorso
directory di installazione di MySql, il PHP utilizzerà
le librerie incluse nella distribuzione. In Windows non vi sono DLL, è semplicemente compilato nel PHP.
Gli utenti che eseguano altre applicazioni basate su MySql (come, ad esempio,
auth-mysql), non dovrebbero utilizzare le librerie allegate al PHP, ma, piuttosto,
indicare il percorso alla directory di instalalzione di MySQL, come, ad esempio;
--with-mysql=/percorso/a/mysql.
Questo forzerà PHP ad usare le librerie client installate
da MySQL evitando ogni conflitto.
In PHP 5, MySQL non sarà più abilitato per default, e nè la libreria MySQL
sarà allegata al PHP. Per maggiori dettagli sul perchè leggere:
FAQ.
Questo modulo di interfaccia a MySQL non supporta completamente le tutte le funzioni presenti nelle
versioni di MySQL successive alla 4.1.0. Per avere il pieno supporto a queste vedere MySQLi.
Se si desidera installare sia il modulo mysql sia il modulo mysqli
utilizzare la stessa libreria client per evitare conflitti.
Avvertimento |
Problemi di blocco e di avvio di PHP possono essere riscontrati
quando si carica questa estensione insieme ad estensioni recode.
Vedere anche l'estensione recode per
maggiori informazioni.
|
Nota:
Se occorre utilizzare set di caratteri differenti rispetto al latin (il default),
si deve installare la libreria esterna (non allegata al PHP) libmysql compilata
con il supporto dei set di caratteri.
Il comportamento di queste funzioni è influenzato dalle impostazioni di php.ini.
Tabella 1. Opzioni di configurazione di MySQL
Nome | Predefinito | Modificabile in |
---|
mysql.allow_persistent | "On" | PHP_INI_SYSTEM |
mysql.max_persistent | "-1" | PHP_INI_SYSTEM |
mysql.max_links | "-1" | PHP_INI_SYSTEM |
mysql.default_port | NULL | PHP_INI_ALL |
mysql.default_socket | NULL | PHP_INI_ALL |
mysql.default_host | NULL | PHP_INI_ALL |
mysql.default_user | NULL | PHP_INI_ALL |
mysql.default_password | NULL | PHP_INI_ALL |
mysql.connect_timeout | "0" | PHP_INI_SYSTEM |
Per ulteriori dettagli e definizione delle costanti PHP_INI_* vedere
ini_set().
Breve descrizione dei parametri
di configurazione.
- mysql.allow_persistent
boolean
Determina se consentire le
connessioni persistenti
a MySQL.
- mysql.max_persistent
integer
Il numero massimo di connessioni persistenti MySQL per
processo.
- 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 porta viene specificata. Se
nessun valore predefinito e specificato, la porta sarà ottenuta
dalla variabile d'ambiente MYSQL_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 nome di 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 viene specificato. 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 viene specificato. 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 viene specificata. Non si appplica in
safe mode.
- mysql.connect_timeout
integer
Timeout di connessione in secondi. Per Linux questo timeout è usato anche per
attendere la prima risposta dal server.
Ci sono due tipi di risorsa usati nel modulo MySQL. Il primo
è l'identificativo di connessione per una connessione ad un database, del secondo tipo sono
le risorse che contengono i risultati di una query.
Queste costanti sono definite da questa estensione e
sono disponibili solo se l'estensione è stata compilata
nel PHP o se è stata caricata dinamicamente a runtime.
Fin dal PHP 4.3.0 è possibile specificare flag addizionali per il client
per le funzioni mysql_connect() e mysql_pconnect().
Sono definite le seguenti costanti:
Tabella 2. Costanti client MySQL
Costante | Descrizione |
---|
MYSQL_CLIENT_COMPRESS | Usa la compressione del protocollo |
MYSQL_CLIENT_IGNORE_SPACE | Consente lo spazio dopo i nomi delle funzioni |
MYSQL_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
le seguenti costanti:
Tabella 3. Costanti caricamento MySQL
Costante | Descrizione |
---|
MYSQL_ASSOC |
Le colonne sono restituite in un array avente il nome del campo come
indice dell'array
|
MYSQL_BOTH |
Le colonne sono restituite in un array avente sia un indice numerico
sia un indice costituito dal nome del campo
|
MYSQL_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 dal database MySQL.
Esempio 1. Esempio dell'estensione MySQL
<?php /* Connessione e selezione del database */ $connessione = mysql_connect("host_mysql", "utente_mysql", "password_mysql") or die("Connessione non riuscita: " . mysql_error()); print "Connesso con successo"; mysql_select_db("mio_database") or die("Selezione del database non riuscita");
/* Esecuzione di una query SQL */ $query = "SELECT * FROM mia_tabella"; $risultato = mysql_query($query) or die("Query fallita: " . mysql_error() );
/* Stampa dei risultati in HTML */ echo "<table>\n"; while ($linea = mysql_fetch_array($risultato, MYSQL_ASSOC)) { echo "\t<tr>\n"; foreach ($linea as $valore_colonna) { echo "\t\t<td>$valore_colonna</td>\n"; } echo "\t</tr>\n"; } print "</table>\n";
/* Liberazione delle risorse del risultato */ mysql_free_result($risultato);
/* Chiusura della connessione */ mysql_close($connessione); ?>
|
|