Forum und email

MySQL-funktioner

Introduktion

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

Dokumentationen for MySQL kan findes på » https://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

Note: 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

Warning

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.

Note: 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.

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.

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:

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:

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.

Example#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($resultMYSQL_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);
?>

Table of Contents