Forum und email

MySQL Funktioner

Introduktion

Med dessa funktioner kan du ansluta mot MySQL databaser. Mera information om MySQL finns på följande länk » https://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.

Warning

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.

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

MySQL Configuration Options
Namn Standard Variabel
mysql.allow_persistent "On" PHP_INI_SYSTEM
mysql.max_persistent "-1" PHP_INI_SYSTEM
mysql.max_links "-1" PHP_INI_SYSTEM
mysql.default_port NULL PHP_INI_ALL
mysql.default_socket NULL PHP_INI_ALL
mysql.default_host NULL PHP_INI_ALL
mysql.default_user NULL PHP_INI_ALL
mysql.default_password NULL PHP_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.

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:

MySQL client konstanter
Konstant Beskrivning
MYSQL_CLIENT_COMPRESS Använd komprimerings protokollet.
MYSQL_CLIENT_IGNORE_SPACE Tilllå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:

MySQL fetch konstanter
Konstant Beskrivning
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.

Example#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($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";

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

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

Table of Contents