LXVII. MySQL Functions

Introduzione

Queste funzioni consentono l'accesso ai server di database MySQL. Maggiori informazioni riguardo MySQL possono essere trovate su http://www.mysql.com/.

La documentazione su MySQL può essere trovata su http://dev.mysql.com/doc/.

Requisiti

Al fine di rendere queste funzioni disponibili, si deve compilare PHP con il supporto MySQL.

Installazione

Usando l'opzione di configurazione --with-mysql[=DIR] si abilita PHP l'accesso ai database MySQL. Se si usa questa opzione senza specificare il percorso a MySQL, PHP userà le librerie client MySQL interne. Con PHP 4, il supporto a MySQL è sempre abilitato; se non si specifica l'opzione di configurazione, vengono usate le librerie incluse. Gli utenti che eseguono altre applicazioni che usano MySQL (ad esempio, usando PHP 3 e PHP 4 come moduli concorrenti di Apache oppure auth-mysql) dovrebbere specificare sempre il percorso a MySQL: --with-mysql=/percorso/a/mysql. Questo forzerà PHP ad usare le librerie client installate da MySQL evitando ogni conflitto.

La versione per Windows di PHP ha già compilato il supporto per questo modulo. Non occorre caricare alcun modulo addizionale per potere utilizzare queste funzioni.

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.

Configurazione di Runtime

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

Tabella 1. Opzioni di configurazione di MySQL

NomePredefinitoModificabile in
mysql.allow_persistent"On"PHP_INI_SYSTEM
mysql.max_persistent"-1"PHP_INI_SYSTEM
mysql.max_links"-1"PHP_INI_SYSTEM
mysql.default_portNULLPHP_INI_ALL
mysql.default_socketNULLPHP_INI_ALL
mysql.default_hostNULLPHP_INI_ALL
mysql.default_userNULLPHP_INI_ALL
mysql.default_passwordNULLPHP_INI_ALL
mysql.connect_timeout"0"PHP_INI_SYSTEM
Per ulteriori dettagli e definizione delle costanti PHP_INI_* vedere ini_set().

Qui c'è una breve spiegazione delle direttive 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.

Tipi di risorse

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.

Costanti predefinite

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

CostanteDescrizione
MYSQL_CLIENT_COMPRESSUsa la compressione del protocollo
MYSQL_CLIENT_IGNORE_SPACEConsente lo spazio dopo i nomi delle funzioni
MYSQL_CLIENT_INTERACTIVELascia 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

CostanteDescrizione
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

Esempi

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");
    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");

    
/* Stampa dei risultati in HTML */
    
print "<table>\n";
    while (
$linea = mysql_fetch_array($risultato, MYSQL_ASSOC)) {
        print
"\t<tr>\n";
        foreach (
$linea as $valore_colonna) {
            print
"\t\t<td>$valore_colonna</td>\n";
        }
        print
"\t</tr>\n";
    }
    print
"</table>\n";

    
/* Liberazione delle risorse del risultato */
    
mysql_free_result($risultato);

    
/* Chiusura della connessione */
    
mysql_close($connessione);
?>

Sommario
mysql_affected_rows -- Ottiene il numero di righe coinvolte nelle precedenti operazioni MySQL
mysql_change_user --  Cambia l'utente della connessione attiva
mysql_client_encoding -- Restituisce il nome del set di caratteri
mysql_close -- Chiude una connessione MySQL
mysql_connect -- Apre una connessione ad un server MySQL
mysql_create_db -- Crea un database MySQL
mysql_data_seek -- Muove il puntatore interno del risultato
mysql_db_name -- Ottiene dei dati dal risultato
mysql_db_query -- Invia una query MySQL
mysql_drop_db -- Elimina (cancella) un database MySQL
mysql_errno --  Restituisce il valore numerico del messaggio di errore della precedente operazione MySQL
mysql_error --  Restituisce il testo del messagio di errore della precedente operazione MySQL
mysql_escape_string --  Aggiunge le sequenze di escape in una stringa per l'uso in mysql_query.
mysql_fetch_array --  Carica una riga del risultato come un array associativo, un array numerico o entrambi.
mysql_fetch_assoc --  Carica una riga del risultato come array associativo
mysql_fetch_field --  Ottiene informazioni sulla colonna da un risultato e le restituisce come oggetto
mysql_fetch_lengths --  Ottiene la lunghezza di ogni output nel risultato
mysql_fetch_object -- Carica una riga del risultato come un ogetto
mysql_fetch_row -- Ottiene una riga del risultato come un array enumerato
mysql_field_flags --  Ottine i flag associati al campo specificato di un risultato
mysql_field_len --  Restituisce la lunghezza del campo specificato
mysql_field_name --  Ottiene il nome del campo specificato in un risultato
mysql_field_seek --  Imposta il puntatore al risultato ad un determinato indice di campo
mysql_field_table --  Ottiene il nome della tabella in cui si trova il campo specificato
mysql_field_type --  Ottiene il tipo del campo specificato in un risultato
mysql_free_result -- Libera la memoria occupata dal risultato
mysql_get_client_info -- Ottine informazioni sul client MySQL
mysql_get_host_info -- Ottiene le informazioni sull'host MySQL
mysql_get_proto_info -- Ottiene le informazion sul protocollo MySQL
mysql_get_server_info -- Ottiene le informazioni sul server MySQL
mysql_info --  Ottiene le informazioni relative alla query più recente.
mysql_insert_id --  Ottiene l'identificativo generato dalla precedente operazione INSERT
mysql_list_dbs --  Elenca i database disponibili in un server MySQL
mysql_list_fields -- Elenca i campi di un risultato MySQL
mysql_list_processes -- Elenca i processi MySQL
mysql_list_tables -- Elenca le tabelle in un database MySQL
mysql_num_fields -- Ottiene il numero di campi nel risultato
mysql_num_rows -- Ottiene il numero di righe in un risultato
mysql_pconnect --  Apre una connessione persiostente ad un server MySQL
mysql_ping -- Esegue un ping su una connessione al server o riconnette se non non esiste la connessione
mysql_query -- Invia una query MySQL
mysql_real_escape_string --  Aggiunge le sequenze di escape ai caratteri speciali in una stringa per l'uso in una istruzione SQL, tenendo conto dell'attuale set di caratteri della connessione.
mysql_result -- Ottiene i dati dal risultato
mysql_select_db -- Seleziona un database MySQL
mysql_stat -- Ottiene l'attuale stato del sistema
mysql_tablename -- Ottiene il nome della tabella
mysql_thread_id -- Restituisce l'attuale thread ID
mysql_unbuffered_query --  Invia una query SQL a MySQL senza caricare e bufferare le righe risultanti