LXV. MySQL Funktioner

Introduktion

Med dessa funktioner kan du ansluta mot MySQL databaser. Mera information om MySQL finns på följande länk http://www.mysql.com/.

Dokumentation om MySQL finns här. Känner du att du inte är insatt i MySQL rekommenderas kapitel 3 (i MySQL manualen) varmt, där finns en kort handledning om hur man arbetar med MySQL.

Krav

För att använda dessa funktioner måste du bygga PHP med MySQL stöd (detta är inkluderat som standard).

Installation

Genom att använda --with-mysql[=DIR] när du konfigurerar PHP så bygger man in stöd för att ansluta mot MySQL databaser.

Vad det gäller PHP 4 så är --with-mysql inkluderat som standard. Vill du inte bygga in MySQL APIn, så använder du --without-mysql som konfigurations alternativ. Om du inte anger en sökväg till din MySQL installation så kommer PHP att använda standard biblioteken som inkluderas. I Windows så finns det ingen DLL, det är helt enkelt inbyggt i PHP 4. Användare som kör andra applikationer vilka också använder MySQL (t.ex. auth-mysql) bör inte använda de inkluderade biblioteken, utan rekomenderas att specifiera sökvägen till deras MySQL installation, som följer: --with-mysql=/path/to/mysql. Detta tvingar PHP att använda klient-biblioteken som MySQL installationen skapar och där med undviks eventuella konflikter.

Från och med PHP 5 är inte längre MySQL inkluderat som standard, inte heller kommer MySQL biblioteken att skeppas tillsammans med PHP. Läs gärna FAQ för ett mera ingående resonemang.

Dessa MySQL bibliotek kommer inte att vara kompatibla med MySQL versioner över 4.1.0. Se MySQLi för detta.

Varning

Om man upplever ostabilitet eller problem med uppstarten kan det bero på att man använder recode modulen simultant med MySQL modulen. För vidare information se recode.

Not: Skall du använda en annan teckenuppsätning än latin (standard), måste du installera en extärn (ej inkluderad) libmysql vilken är kompilerad med stöd för rätt teckenuppsättning.

Konfiguration under drift

De här funktionernas beteende påverkas av inställningarna i php.ini.

Tabell 1. MySQL Configuration Options

NamnStandardVariabel
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
För vidare information om PHP_INI_* och dess konstanter, se ini_set().

Här följer en kort förklaring av konfigurationsdirektiven.

mysql.allow_persistent boolean

Anger om man tilllåts använda bestående anslutningar mot MySQL.

mysql.max_persistent integer

Max antal bestående MySQL anslutningar per process.

mysql.max_links integer

Max antal MySQL anslutningar per process, inklusive bestående anslutningar.

mysql.default_port string

TCP-porten som användas per standard för att ansluta mot MySQL tjänsten om inte annat anges. Om ingen standardport anges, kommer först miljövariabeln MYSQL_TCP_PORT att användas. Finns inte denna, så blir det mysql-tcp i /etc/services. Skulle inte heller denna finnas blir det sista alternativet att använda MYSQL_PORT konstanten. Win32 kommer endast att använda MYSQL_PORT konstanten.

mysql.default_socket string

Standard namnet på den socket som används för att ansluta till en lokal databasserver när inget annat anges.

mysql.default_host string

Om ingen host anges så kommer den att ansluta till detta hostname som standard. Detta gäller inte safe mode.

mysql.default_user string

Standard användaren som ansluter mot databasen om ingen sådan anges. Detta gäller inte safe mode.

mysql.default_password string

Standard lösenordet som skall användas då annat inte angivits. Detta gäller inte safe mode.

mysql.connect_timeout integer

Antal sekunder anslutningen får vara inaktiv innan den avslutas. Under Linux implenenteras även detta värde för att invänta det första svaret från servern.

Resurstyper

MySQL modulen bygger på två typer av resurser. Den första identifierar anslutningen/länken mot databasen (se $link nedan). Den andra resursen innehåller resultatet av SQL frågan (se $result nedan).

Fördefinerade konstanter

Konstanterna nedan defineras av den här utbyggnaden, och kommer bara vara tillgängliga då utbyggnaden kompilerats med PHP eller laddats dynamiskt.

Från PHP version 4.3.0 är det möjligt att specifiera extra klient-flaggor för funktionerna mysql_connect() samt mysql_pconnect(). Följande konstanter finns definerade:

Tabell 2. MySQL client konstanter

KonstantBeskrivning
MYSQL_CLIENT_COMPRESSAnvänd komprimerings protokollet.
MYSQL_CLIENT_IGNORE_SPACETilllåt blanksteg efter funktion namnet.
MYSQL_CLIENT_INTERACTIVE Använd interactive_timeout (istället för wait_timeout) för att bestämma när anslutningen skall stängas för inaktivitet (båda skrivs med sekunder).

Funktionen mysql_fetch_array() använder en konstant för att hantera resultaten (från SQL frågan) på olika sätt. Följande konstanter finns definerade:

Tabell 3. MySQL fetch konstanter

KonstantBeskrivning
MYSQL_ASSOC Kolumnerna returneras som associativa listor med kolumnnamnet som index.
MYSQL_BOTH Kolumnerna returneras med både ett numeriskt index och ett kolumnnamn som index.
MYSQL_NUM Kolumnerna returneras i ordning med ett numeriskt index. Indexet startar alltid på 0, vilket motsvarar den första kolumnen i SQL frågan.

Exempel

Exemplet nedan visar hur man på ett enkelt sätt ansluter, skickar en fråga, skriver ut resultatet och avslutar anslutningen mot MySQL databasen.

Exempel 1. MySQL översikts exempel

<?php

/* Skapa en anslutning, och välj en databas */
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
   or die(
"Kunde inte ansluta mot databasen: " . mysql_error());
echo
"Anslutningen Lyckades!";
mysql_select_db("my_database", $link) or die("Kunde inte välja databasen");

/* Skicka SQL frågan */
$query = "SELECT * FROM my_table";
$result = mysql_query($query, $link) or die("Frågan misslyckades: " . mysql_error());

/* Skriv nu ut 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";

/* Frigör minnet som SQL frågan reserverade */
mysql_free_result($result);

/* Avsluta anslutningen */
mysql_close($link);
?>

Innehållsförteckning
mysql_affected_rows -- Get number of affected rows in previous MySQL operation
mysql_change_user --  Change logged in user of the active connection
mysql_client_encoding -- Returns the name of the character set
mysql_close -- Close MySQL connection
mysql_connect -- Open a connection to a MySQL Server
mysql_create_db -- Create a MySQL database
mysql_data_seek -- Move internal result pointer
mysql_db_name -- Get result data
mysql_db_query -- Send a MySQL query
mysql_drop_db -- Drop (delete) a 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 --  Fetch a result row as an associative array, a numeric array, or both.
mysql_fetch_assoc --  Fetch a result row as an associative array
mysql_fetch_field --  Get column information from a result and return as an object
mysql_fetch_lengths --  Get the length of each output in a result
mysql_fetch_object -- Fetch a result row as an object
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 -- Send a MySQL query
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