PHP Manualen
forrige |  | næste

# 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

Navne | Standard | Udskiftelig | Changelog
--- | --- | --- | ---
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_ALL | Tilgængelig siden PHP 4.3.0.
mysql.default_port | NULL | PHP_INI_ALL |
mysql.default_socket | NULL | PHP_INI_ALL | Tilgængelig siden PHP 4.0.1.
mysql.default_host | NULL | PHP_INI_ALL |
mysql.default_user | NULL | PHP_INI_ALL |
mysql.default_password | NULL | PHP_INI_ALL |
mysql.connect_timeout | "60" | PHP_INI_ALL | PHP_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

Konstant | Beskrivelse
--- | ---
MYSQL_CLIENT_COMPRESS | Brug kompressionsprotokol
MYSQL_CLIENT_IGNORE_SPACE | Tillad mellemrum efter funktionsnavne
MYSQL_CLIENT_INTERACTIVE | Tillad interactive_timeout sekunder (i stedet for wait_timeout) af inaktivitet, inden forbindelsen lukkes.
MYSQL_CLIENT_SSL | Brug 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

Konstant | Beskrivelse
--- | ---
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);
?>`

forrige | hjem | næste
muscat_setup | op | mysql_affected_rows