LXVIII. MySQL Functions

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

Ved at bruge --with-mysql[=DIR] som konfigurations flag, under kompilering, kan du få PHP til at bruge MySQL databaser.

I PHP 4, er flaget --with-mysql som stadard slået til. For at fravælge denne feature, skal du bruge --without-mysql som konfigurations flag under kompilering. Samtidig kan du også i PHP 4, vælge at installere det uden at specificere stien til til det DIR MySQL er installeret i, PHP vil der bruge de indbyggede MySQL biblioteker. I Windows er der ingen DLL, da det er allerede er indbygget i PHP 4. Brugere der benytter andre applikationer der bruger MySQL (for eksempel, auth-mysql) bør ikke bruge det indbyggede bibliotek, men derimod specificere DIR-et hvor i, MySQL er installeret, ved at benytte følgende kompilerings flag: --with-mysql=/sti/til/mysql. Dette vil tvinge PHP til at bruge de klient biblioteker, der er installeret med MySQL, og undgår dermed konflikter.

I PHP 5, er MySQL ikke længere slået til som standard, MySQL klient bibliotekerne er heller ikke længere med i PHP. Læs denne FAQ for detaljer, samt begrundelse. På grund af dtte, er Windows brugere nød til at aktivere php_mysql.dll inde i php.ini og enten kopiere libmysql.dll ind i Windows system mappen eller på anden måde gøre den mulig i stien. For kompilering, skal man bare bruge --with-mysql=[DIR] hvor [DIR] er specificeret.

I denne MySQL pakke, er der ikke fuldt ud funktionalitet for MySQL versioner højere end 4.1.0. Til det formål, brug MySQLi.

Hvis du ønsker at installere MySQL pakken, sammen med mysqli pakken bliver du nødt til at bruge de samme klient biblioteker, for at undgå konflikter.

Advarsel

Crashes og startup problemer af PHP kan forekomme ved at benytte denne pakke, samme med recode pakken. Se recode pakken for mere information.

Bemærk: hvis du har brug for et andet charset end latin (standard), skal du installere (ikke indbygget) libmysql, kompileret med det ønskede charset.

Runtime Konfiguration

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

Tabel 1. MySQL Konfigurations muligheder

NavneStandardUdskiftelig
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
For flere detaljer angående PHP_INI_* konstanter se ini_set().

Her er en kort forklaring på konfigurations-direktiverne.

mysql.allow_persistent boolean

Hvor vidt du vil tillade vedvarende forbindelse til MySQL.

mysql.max_persistent integer

Det maximale nummer af vedvarende MySQL forbindelser, per proces.

mysql.max_links integer

Det maximale nummer af MySQL forbindelser per proces, inklusive vedvarende forbindelser.

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 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 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 safe mode.

mysql.connect_timeout integer

Forbindelses timeout i sekunder. På Linux er denne timeout også brugt 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 resource, 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 klient konstanter for mysql_connect() og mysql_pconnect() funktionerne. Følgende konstanter er defineret:

Tabel 2. MySQL klient konstanter

KonstantBeskrivelse
MYSQL_CLIENT_COMPRESSBrug kompressions protokol
MYSQL_CLIENT_IGNORE_SPACETillad mellemrum efter funktions navne
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ængelig i version 4.x af klient biblioteket, eller nyere. PHP4 og Windows versionen af PHP5 kommer med Version 3.23.x af klient biblioteket.

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 udvidelse eksempel

<?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 påvirket, ved sidste MySQL forespørgsel
mysql_change_user --  Skifte bruger for den aktive forbindelse
mysql_client_encoding -- Returnerer det nuværende tegnsæt
mysql_close -- Lukker MySQL forbindelsen
mysql_connect -- Åbner en forbindelse 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 -- Send en MySQL forespørgsel
mysql_drop_db -- Sletter en MySQL database
mysql_errno --  Returns the numerical value of the error message from previous MySQL operation
mysql_error --  Returns the text of the error message from previous MySQL operation
mysql_escape_string --  Escapes a string for use in a mysql_query.
mysql_fetch_array --  Skaber et resultat som et associeret array, et numerisk, eller begge dele.
mysql_fetch_assoc --  Returnerer en række, som et associativt 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 -- Get a result row as an enumerated array
mysql_field_flags --  Get the flags associated with the specified field in a result
mysql_field_len --  Returns the length of the specified field
mysql_field_name --  Get the name of the specified field in a result
mysql_field_seek --  Set result pointer to a specified field offset
mysql_field_table --  Get name of the table the specified field is in
mysql_field_type --  Get the type of the specified field in a result
mysql_free_result -- Free result memory
mysql_get_client_info -- Get MySQL client info
mysql_get_host_info -- Get MySQL host info
mysql_get_proto_info -- Get MySQL protocol info
mysql_get_server_info -- Get MySQL server info
mysql_info --  Get information about the most recent query
mysql_insert_id --  Get the ID generated from the previous INSERT operation
mysql_list_dbs --  List databases available on a MySQL server
mysql_list_fields -- List MySQL table fields
mysql_list_processes -- List MySQL processes
mysql_list_tables -- List tables in a MySQL database
mysql_num_fields -- Get number of fields in result
mysql_num_rows -- Get number of rows in result
mysql_pconnect --  Open a persistent connection to a MySQL server
mysql_ping -- Ping a server connection or reconnect if there is no connection
mysql_query -- Sender en forespørgsel til MySQL
mysql_real_escape_string --  Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection.
mysql_result -- Get result data
mysql_select_db -- Select a MySQL database
mysql_stat -- Get current system status
mysql_tablename -- Get table name of field
mysql_thread_id -- Return the current thread ID
mysql_unbuffered_query --  Send an SQL query to MySQL, without fetching and buffering the result rows