LXXXII. MySQL-funktioner

Introduktion

Disse funktioner giver dig mulighed for at tilgå en MySQL-database. Mere information kan findes på http://www.mysql.com/.

Dokumentationen for MySQL kan findes på http://dev.mysql.com/doc/.

Systemkrav

For at kunne bruge disse funktioner skal du have kompileret PHP med support for MySQL.

Installation

For komilering, brug da --with-mysql[=DIR] som kompilerings flag, hvor den valgfrie valgmulighed [DIR] peger på MySQL installations mappen.

Denne MySQL-udvidelse rummer ikke fuld funktionalitet for MySQL-versioner højere end 4.1.0. Brug MySQLi til det formål.

Hvis du ønsker at installere mysql-udvidelsen, sammen med mysqli-udvidelsen, bliver du nødt til at bruge de samme klientbiblioteker for at undgå konflikter.

Installation på Linux Systemer

PHP 4

Kompilerings flaget --with-mysql er som standard aktiveret. Denne standard opførsel kan ændres med --without-mysql kompilerings flaget. Hvis MySQL er aktiveret uden der er defineret stien til MySQL installations mappen vil oho bruge de medfølgende MySQL klient biblioteker.

Brugere der bruger andre applikationer som bruger MySQL (for eksempel, auth-mysql) skal ikke bruge det medfølgende bibliotek, men bør definere stien til MySQL installations mappen, som her: --with-mysql=/sti/til/mysql. Det vil tvinge PHP til at bruge de klient biblioteker der er stillet til rådighed af MySQL installationen og afværge konflikter. Du kan downloade inkluderingsfiler og biblioteker fra MySQL.

PHP 5+

MySQL er ikke aktiveret som standard, lige så er MySQL biblioteket medfølgende i PHP. Læs denne FAQ for nærmere forklaring. Brug --with-mysql[=DIR] compilerings flaget for at inkludere MySQL support.

Installation på Windows Systemer

PHP 4

PHP MySQL modulet er medfølgende i PHP.

PHP 5+

MySQL er ikke længere aktiveret som standard, derfor må php_mysql.dll DLL-filen være aktiveret i php.ini. PHP har også brug for adgang til MySQL klient biblioteket. En file kaldet libmysql.dll ier inkluderet i Windows PHP versionen og for at PHP kan tale med MySQL må denne fil være tilgængelig i Windows system PATH. See FAQ'en kaldet "How do I add my PHP directory to the PATH on Windows" for information om hvordan do gør Dette. Selv om en kopiering af libmysql.dll til Windows system mappen, også virker (fordi system mappen per standard er System PATH), er det ikke anbefalelses værdigt.

Når du aktiverer PHP moduler (så som php_mysql.dll), skal PHP stien extension_dir være sat til den mappe hvor PHP modulerne er lokaliseret. Se også Manuel Windows Installation Instruktioner. Et eksempel på example extension_dir værdi for PHP 5 er c:\php\ext

Bemærk: Hvis du får en opstarts fejl af din web server der ligner: "Unable to load dynamic library './php_mysql.dll'", er det fordi php_mysql.dll og/eller libmysql.dll ikke kan findes af systemet.

MySQL Installation noter

Advarsel

Nedlukning og start problemer med PHP kan ske når du prøver at bruge dette modul sammen med recode modulet. Se recode modulet for mere information.

Bemærk: Hvis du har brug for andre karaktersæt end latin (standard), bliver du nødt til at installere disse yderligere (de er ikke med) libmysql hvor dene r compilet med support for det pågældende karaktersæt.

Runtime Konfiguration

Virkemåden af disse funktioner er berørt af indstillinger i php.ini.

Tabel 1. MySQL Konfigurationsmuligheder

NavneStandardUdskifteligChangelog
mysql.allow_persistent"1"PHP_INI_SYSTEM 
mysql.max_persistent"-1"PHP_INI_SYSTEM 
mysql.max_links"-1"PHP_INI_SYSTEM 
mysql.trace_mode"0"PHP_INI_ALLTilgængelig siden PHP 4.3.0.
mysql.default_portNULLPHP_INI_ALL 
mysql.default_socketNULLPHP_INI_ALLTilgængelig siden PHP 4.0.1.
mysql.default_hostNULLPHP_INI_ALL 
mysql.default_userNULLPHP_INI_ALL 
mysql.default_passwordNULLPHP_INI_ALL 
mysql.connect_timeout"60"PHP_INI_ALLPHP_INI_SYSTEM i PHP <= 4.3.2. Tilgængelig siden PHP 4.3.0.
For flere detaljer og definationer af PHP_INI_* constanterne, se ini_set() dokumentation.

Her er en kort forklaring på konfigurations-direktiverne.

mysql.allow_persistent boolean

Hvorvidt du vil tillade vedvarende forbindelse til MySQL.

mysql.max_persistent integer

Det maksimale antal af vedvarende MySQL-forbindelser per proces.

mysql.max_links integer

Det maksimale antal af MySQL-forbindelser per proces, inklusive vedvarende forbindelser.

mysql.trace_mode boolean

Når mysql.trace_mode er aktiveret, vil der komme advarsler, for tomme tabeller/indexes, hvori der bliver søgt, og SQL-fejlen vil blive vist. (Introduceret i PHP 4.3.0)

mysql.default_port string

Standard TCP-port, der bruges til at forbinde til database-serveren. Hvis der ikke er specificeret nogen port, vil den finde porten fra MYSQL_TCP_PORT miljøvariablen, mysql-tcp-indgangen i /etc/services eller den valgte konstant til MYSQL_PORT under kompilering, i samme rækkefølge. Win32 vil kun bruge MYSQL_PORT-konstanten.

mysql.default_socket string

Standard socket til at forbinde til en lokal database-server, hvis ingen anden socket er specificeret.

mysql.default_host string

Standard host, der bliver brugt, når man forbinder til en database-server, hvis intet andet hostname er specificeret. Virker ikke i SQL safe mode.

mysql.default_user string

Standard brugernavn, der bliver brugt, når man forbinder til en database-server, hvis intet andet brugernavn er specificeret. Virker ikke i SQL safe mode.

mysql.default_password string

Standard password, der bliver brugt, når man forbinder til en database-server, hvis intet andet password er specificeret. Virker ikke i SQL safe mode.

mysql.connect_timeout integer

Forbindelsestimeout i sekunder. Under Linux bruges denne timeout også til at vente på det første svar fra serveren.

Ressourcetyper

Der er to ressourcer, der bliver brugt i MySQL-modulet. Den første er en link-beskriver for forbindelsen, den anden er en ressource, der indeholder resultatet af en forespørgsel.

Foruddefinerede Konstanter

Konstanterne nedenunder er defineret af denne udvidelse, og vil kun være tilgængelige når denne udvidelse enten er blevet kompileret ind i PHP eller dynamisk indsat under runtime.

Siden PHP 4.3.0 har det været muligt at specificere yderligere MySQL-klientkonstanter for mysql_connect()- og mysql_pconnect()-funktionerne. Følgende konstanter er defineret:

Tabel 2. MySQL klientkonstanter

KonstantBeskrivelse
MYSQL_CLIENT_COMPRESSBrug kompressionsprotokol
MYSQL_CLIENT_IGNORE_SPACETillad mellemrum efter funktionsnavne
MYSQL_CLIENT_INTERACTIVETillad interactive_timeout sekunder (i stedet for wait_timeout) af inaktivitet, inden forbindelsen lukkes.
MYSQL_CLIENT_SSLBrug SSL-kryptering. Dette flag er kun tilgængeligt i version 4.x eller nyere af klientbiblioteket. PHP4 og Windows-versionen af PHP5 leveres med version 3.23.x af klientbiblioteket.

Funktionen mysql_fetch_array() bruger en konstant for forskellige typer af resulterende arrays. følgende konstanter er defineret:

Tabel 3. MySQL fetch-konstanter

KonstantBeskrivelse
MYSQL_ASSOC Kolonner er returneret ind i arrayet, hvor de har samme feltnavn som array-indekset.
MYSQL_BOTH Kolonner er returneret ind i arrayet, hvor de både har et numerisk indeks, samt samme feltnavn som array-indekset.
MYSQL_NUM Kolonner er returneret ind i arrayet, hvor de har et numerisk indeks. Dette indeks starter med 0 som det første felt i resultatet.

Eksempler

Dette simple eksempel viser, hvordan man forbinder til databaser, eksekverer en forespørgsel, printer de resulterende rækker og lukker forbindelsen igen.

Eksempel 1. MySQL-udvidelseseksempel

<?php
// Forbinder, vælger database
$link = mysql_connect("mysql_host", "mysql_bruger", "mysql_password")
    or die(
"Kunne ikke forbinde : " . mysql_error());
echo
"Forbundet succesfuldt";
mysql_select_db("min_database") or die("kunne ikke vælge databasen");

// Udfører SQL forespørgsel
$query = "SELECT * FROM min_tabel";
$result = mysql_query($query) or die("Forespørgslen lykkedes ikke : " . mysql_error());

// Printer resultatet i HTML
echo "<table>\n";
while (
$line = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo
"\t<tr>\n";
    foreach (
$line as $col_value) {
        echo
"\t\t<td>$col_value</td>\n";
    }
    echo
"\t</tr>\n";
}
echo
"</table>\n";

// Befri resultatet fra hukommelseN
mysql_free_result($result);

// Luk forbindelsen
mysql_close($link);
?>

Indholdsfortegnelse
mysql_affected_rows -- Find ud af hvor mange rækker der blev berørt af sidste MySQL kald
mysql_change_user -- Skiftie bruger på den aktive forbindelse
mysql_client_encoding -- Returnerer det nuværende tegnsæt
mysql_close -- Lukker MySQL forbindelsen
mysql_connect -- Åbner forbindelsen til en MySQL server
mysql_create_db -- Opretter en MySQL database
mysql_data_seek -- Flyt intern resultat reference
mysql_db_name -- Få resultat data
mysql_db_query -- Sender en MySQL forespørgsel
mysql_drop_db -- Sletter en MySQL database
mysql_errno -- Returnerer den nummeriske værdi, af fejlbesked fra forrige MySQL operation
mysql_error -- Returnerer fejl beskrivelsen fra den seneste MySQL operation
mysql_escape_string -- Sikrer en stren til brug i mysql_query
mysql_fetch_array -- Skaber et resultat som et associeret array, et numerisk, eller begge dele.
mysql_fetch_assoc -- Hent et resultat som et associeret array
mysql_fetch_field -- Modtag kolonne information fra et resultat, og returner det som et objekt.
mysql_fetch_lengths --  Tilgå længden af hvert output i et resultat
mysql_fetch_object -- Tilgå en resulterende række som et objekt
mysql_fetch_row -- Returner en række, som et optalt array
mysql_field_flags --  Modtag de flag der er associeret med det specifikke felt i et resultat
mysql_field_len --  Returnerer længden af det specificerede felt
mysql_field_name --  Modtag navnet på det specifikke felt i et resultat
mysql_field_seek --  Sæt resultat beskriveren, til en specifik reference, til et felt
mysql_field_table --  Modtag navnet på tabbellen, det specifikke felt er i
mysql_field_type --  Returnerer typen af det specifikke felt
mysql_free_result -- Befri den resulterende hukommelse
mysql_get_client_info -- Modtag MySQL klient information
mysql_get_host_info -- Modtag MySQL host information
mysql_get_proto_info -- Modtag MySQL-protokolinformation
mysql_get_server_info -- Modtag MySQL server information
mysql_info --  Modtag information om den seneste forespørgsel
mysql_insert_id --  Modtag det ID, der sidst blev genereret af en INSERT forespørgsel
mysql_list_dbs --  List tilgængelige databaser på MySQL serveren
mysql_list_fields -- List felterne i en MySQL tabel
mysql_list_processes -- Udskriv MySQL processer
mysql_list_tables -- Udskriv tabellerne i en MySQL database
mysql_num_fields -- Returnerer nummeret af felter i et resultat
mysql_num_rows -- Returneret nummeret af rækker i et resultat
mysql_pconnect --  Åben en vedvarende forbindelse til en MySQL server
mysql_ping -- Pinger en server-forbindelse eller genopretter en forbindelse, hvis der ikke er nogen
mysql_query -- Sender en MySQL forespørgsel
mysql_real_escape_string --  Sikrer special karakterer i en streng, til brug i en MySQL erklæring
mysql_result -- Modtag resultat data
mysql_select_db -- Vælg en MySQL database
mysql_stat -- Den nuværende system status
mysql_tablename -- Få navnet på entabel
mysql_thread_id -- Returnerer ID'et på den nuværende tråd
mysql_unbuffered_query --  Send en SQL forespørgsel, til MySQL, uden at hente og lagre, rækkerne.