XCVIII. MySQL Functies

Introductie

Deze functies maken toegang tot MySQL database servers mogelijk. Meer informatie over MySQL is te vinden op http://www.mysql.com/.

Documentatie over MySQL is te vinden op http://dev.mysql.com/doc/.

Afhankelijkheden

Om deze functies te gebruiken moet PHP gecompileerd zijn met ondersteuning voor MySQL.

Installatie

Door de --with-mysql configuratie optie te gebruiken kan PHP toegang krijgen tot MySQL databases. Als deze optie gebruikt wordt zonder het pad naar MySQL te specificeren, zal PHP de ingebouwde MySQL client libraries gebruiken. Met PHP4 is MySQL ondersteuning altijd aan; als je de configuratie optie niet specificeert, worden de bijgevoegde libraries gebruikt. Gebruikers die andere applicaties draaien die MySQL gebruiken (bijvoorbeeld mensen die PHP 3 en PHP 4 naast elkaar draaien als Apache modules, of auth-mysql) moeten altijd het pad naar MySQL specificeren: --with-mysql=/path/to/mysql. Dit zorgt ervoor dat PHP de client libraries die door MySQL geinstalleerd zijn gebruikt, zodat een conflict voorkomen wordt.

Deze functies worden automatisch ingebouwd in de windows versie van PHP. Er zijn geen extra handelingen nodig om deze functies te gebruiken.

Waarschuwing

Crashes en problemen met het opstarten van PHP kunnen voorkomen als deze extensie samen met de recode extensie wordt geladen. Zie de recode extensie voor meer informatie.

Configuratie tijdens scriptuitvoer

Het gedrag van deze functies wordt beïnvloed vanuit php.ini.

Tabel 1. MySQL Configuratie Opties

NaamStandaardVeranderbaar
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_ALL
Zie ook ini_set() voor verdere details en de definitie van de PHP_INI_* constanten.

Hieronder volgt een korte uitleg van de configuratie - instructies

mysql.allow_persistent boolean

Zijn persistent connections in MySQL toegestaan of niet.

mysql.max_persistent integer

Het maximale aantal persistent MySQL connecties per proces.

mysql.max_links integer

Het maximale aantal MySQL connecties per proces, inclusief de persistent connecties.

mysql.default_port string

Het standaard TCP poort nummer te gebruiken wanneer een verbinding met de database server gemaakt moet worden als geen poort is opgegeven. Als geen standaard poort is opgegeven dan wordt de poort verkregen (in deze volgorde) van de omgevingsvariabele MYSQL_TCP_PORT, de mysql-tcp regel in /etc/services of de constante MYSQL_PORT tijdens het compileren. Win32 zal alleen de MYSQL_PORT constante gebruiken.

mysql.default_socket string

De standaard socket naam te gebruiken wanneer lokaal een verbinding moet worden gemaakt met een database server indien geen andere socket naam is opgegeven.

mysql.default_host string

De standaard host naam te gebruiken wanneer lokaal een verbinding moet worden gemaakt met een database server indien geen andere socket naam is opgegeven. Dit is niet van kracht bij het gebruik van safe mode.

mysql.default_user string

De standaard gebruikersnaam te gebruiken wanneer een verbinding moet worden gemaakt met een database server indien geen andere naam is opgegeven. Dit is niet van kracht bij het gebruik van safe mode.

mysql.default_password string

Het standaard wachtwoord te gebruiken wanneer een verbinding moet worden gemaakt met een database server indien geen ander wachtwoord is opgegeven. Dit is niet van kracht bij het gebruik van safe mode.

mysql.connect_timeout integer

Pauze (in seconden) bij het verbinden met een database. Bij Linux wordt deze pauze ook gebruikt voor het wachten op een eerste antwoord van de server.

Resource types

De MySQL module gebruikt twee resource typen. De eerste is de link identifier voor een verbinding met een database, de tweede is een resource voor de resultaten van een query.

Voorgedefinieerde constanten

Deze constanten worden gedefinieerd door deze extensie, en zullen alleen beschikbaar zijn als de extensie met PHP is meegecompileerd, of als deze dynamisch is geladen vanuit een script.

Vanaf PHP 4.3.0 is het mogelijk om additionele client opties voor de functies mysql_connect() en mysql_pconnect() in te stellen. De volgende constanten zijn gedefiniëerd:

Tabel 2. MySQL client constanten

constantebeschrijving
MYSQL_CLIENT_COMPRESSGebruik compressie protocol.
MYSQL_CLIENT_IGNORE_SPACESta een spatie toe na functienamen.
MYSQL_CLIENT_INTERACTIVESta interactive_timeout seconden van inactiviteit (in plaats van wait_timeout) toe alvorens een connectie te sluiten.

De functie mysql_fetch_array() gebruikt een constante voor de verschillende resultaat reeksen. De volgende constanten zijn gedefiniëerd:

Tabel 3. MySQL fetch constanten

constantebeschrijving
MYSQL_ASSOC Kolommen worden geretourneerd in de reeks waarbij de veldnaam als reeksindex wordt gebruikt.
MYSQL_BOTH Kolommen worden geretourneerd in de reeks waarbij zowel de veldnaam als een numerieke index als reeksindex wordt gebruikt.
MYSQL_NUM Kolommen worden geretourneerd in de reeks waarbij een numerieke index als reeksindex wordt gebruikt. Deze index begint bij 0, het eerste veld in het resultaat.

Voorbeelden

Dit simpele voorbeeld laat zien hoe verbinding met een MySQL database tot stand wordt gebracht, er een query wordt uitgevoerd, resulterende rijen worden geprint en hoe de verbinding weer wordt gesloten.

Voorbeeld 1. MySQL extensie overzicht voorbeeld

<?php
// Verbinding maken, een database selecteren
$link = mysql_connect("mysql_host", "mysql_login", "mysql_password")
     or die(
"Kan geen verbinding maken");
print
"Verbinding succesvol gemaakt";
mysql_select_db("my_database")
     or die(
"Kan geen database selecteren");

// Een SQL query uitvoeren
$query = "SELECT * FROM my_table";
$result = mysql_query($query)
     or die(
"Fout bij uitvoeren query");

// Printen resultaten in HTML
print "<table>\n";
while (
$line = mysql_fetch_array($result, MYSQL_ASSOC)) {
     print
"\t<tr>\n";
     foreach (
$line as $col_value) {
         print
"\t\t<td>$col_value</td>\n";
     }
     print
"\t</tr>\n";
}
print
"</table>\n";

// Resultaat-set vrij maken
mysql_free_result($result);

// Verbinding afsluiten
mysql_close($link);
?>

Inhoudsopgave
mysql_affected_rows -- Geeft het aantal betrokken rijen in de vorige MySQL operatie
mysql_change_user --  Verander de ingelogde gebruiker van de actieve sessie
mysql_client_encoding -- Geeft de naam van de character set terug
mysql_close -- Sluit MySQL verbinding
mysql_connect -- Maak een verbinding met een MySQL Server
mysql_create_db -- Maakt een nieuwe MySQL database
mysql_data_seek -- Verplaats interne resultaat pointer
mysql_db_name -- Haal resultaat-gegevens
mysql_db_query -- Stuur een MySQL query
mysql_drop_db -- Verwijder een MySQL database
mysql_errno --  Geeft de numerieke waarde van het foutbericht van de vorige MySQL operatie.
mysql_error --  Geeft de tekst van het foutbericht van de vorige MySQL operatie
mysql_escape_string --  Escapet een string voor gebruik in een MySQL query
mysql_fetch_array --  Haal een resultaat rij op als een associatieve array, een numerieke array, of beiden
mysql_fetch_assoc --  Haal een resultaat rij op als een associatieve array
mysql_fetch_field --  Haal kolom informatie uit een resultaat en geef die terug als object
mysql_fetch_lengths --  Haal de lengte op van elke output in een resultaat
mysql_fetch_object -- Haal een resultaat rij op als een object
mysql_fetch_row -- Haal een resultaat rij op als een genummerde array
mysql_field_flags --  Haal de flags op die geassocieerd worden met het gegeven veld in een resultaat
mysql_field_len --  Geeft de lengte van het gegeven veld terug
mysql_field_name --  Haal de naam op van het gegeven veld in een resultaat
mysql_field_seek --  Zet de resultaat pointer op een gegeven veld index
mysql_field_table --  Geef de naam van de tabel waar het gegeven veld in zit
mysql_field_type --  Geef het type van het gegeven veld in een resultaat
mysql_free_result -- Maak geheugen van het resultaat vrij
mysql_get_client_info -- Geef MySQL client info
mysql_get_host_info -- Geef MySQL host info
mysql_get_proto_info -- Geef MySQL protocol info
mysql_get_server_info -- Geef MySQL server info
mysql_info --  Haal informatie op over de recentste query
mysql_insert_id --  Geef het id dat gegenereerd werd door de vorige INSERT query
mysql_list_dbs --  Geef een lijst van beschikbare databases op een MySQL server
mysql_list_fields -- Geef een lijst van MySQL resultaat velden
mysql_list_processes -- Geef een lijst van MySQL processen
mysql_list_tables -- Geef een lijst van tabellen in een MySQL database
mysql_num_fields -- Geef het aantal velden in een resultaat
mysql_num_rows -- Geef het aantal rijen in een resultaat
mysql_pconnect --  Open een persistente verbinding naar een MySQL server
mysql_ping -- Ping een server connectie of maak weer verbinding als er geen verbinding is
mysql_query -- Verstuur een MySQL query
mysql_real_escape_string --  Escapet speciale karakters in een string die wordt gebruikt in een SQL statement, waarbij de huidige charset van de verbinding in het oog wordt gehouden.
mysql_result -- Geef de resultaat data
mysql_select_db -- Selecteer een MySQL database
mysql_stat -- Geef huidige systeem status
mysql_tablename -- Geef de tabelnaam van een veld
mysql_thread_id -- Geef het huidige thread ID terug
mysql_unbuffered_query --  Stuur een SQL query naar MySQL zonder resultaten op te halen en te bufferen