PHP + MySQL

Her er ein kort beskrivelse av dei vanligaste funksjonane som trengs for å kobla seg opp mot ein MySQL-database og gjera spørringar mot den. Denne artikkelen beskriv såkalt prosedyre-PHP, men andre stader vil du kanskje finna den objektorienterte PHP, som har ein annan skrivemåte, men dei samme funksjonane. Her har  vi fokus på å få ting til å virka på ein enkel måte. Det fins betre måtar å gjera det på i forhold sikkerhet mm. Sjå feks: Using PHP with MySQL - the right way.

Oppkobling:

Oppkobling mot database med host, brukar, passord og database. Disse kan evt. definerast som variable, slik boka gjer. Eksempel:
$kobling = mysqli_connect("localhost","root","","mydb");

Etterpå bør vi sjekka om oppkobling gjekk bra, og evt gi beskrivelse av feilen vha mysqli_connect_error:
if (!$kobling) {
    die("Tilkobling mislukkast: " . mysqli_connect_error());

Spørring:

Hvis oppkoblinga gjekk greit, sender vi ein spørring til databasen. Merk at her må vi bruka $kobling, eller det navnet vi bruker  i oppkoblingen over! Også her er det mulig å bruka ein variabel til sjølve spørringen, feks $sql = "SELECT osv .... ". Her må du tilpassa spørring til ditt behov.
$resultat = mysqli_query($kobling,"SELECT * from tabell");

Behandling av resultat:

Hvis du utfører ein SELECT, vil vi som regel initialisera eit array til å lagra* svaret på spørringen. Her må du gjerne bruka tabellnavnet frå databasen din.
$tabell = array(); 

Så henter vi heile tabellen frå $resultat over i $tabell. Hvis du har brukt eit anna navn enn "tabell" over, må du endra også her:
$tabell = mysqli_fetch_all($resultat, MYSQLI_ASSOC);

No kan vi vise / bruka heile tabellen eller deler av den. Eksempelet under viser kolonnen "kolonne1" for alle radene. Du treng også å endra 'kolonne' til det verkelige navnet på ei kolonne i din tabell. Du vil sikkert også ha ut data frå meir enn bare ei kolonne:     
foreach($tabell as $rad){ 
    echo $rad['kolonne1']."<br>";
}

Lukking:

Når vi er ferdige med databasekall, kan vi lukka tilkoblingen til databasen vha.
mysqli_close(
$kobling)

Andre funksjonar

I staden for å henta heile tabellen som over, kan vi henta verdiane, rad for rad, frå resultat. Radene blir då lagt til i $tabell vha ei løkke:
while ($rad = mysqli_fetch_array($resultat, MYSQLI_ASSOC)) {
      $tabell[] = $rad; 
 }

mysqli_insert_id($kobling); gir deg ID til den forrige INSERT. Her forutset vi at AI (auto-incremental) er kryssa av. Hvis ikkje har programmet ditt tilgang til IDen allerede og treng ikkje bruka denne funksjonen.

mysqli_affected_rows($kobling) gir deg kor mange rader som vart berørt i din spørring, dvs. kor mange som vart endra ved ein INSERT, UPDATE eller DELETE.

$antallrader = mysqli_num_rows($resultat); gir deg antalet rader i svaret for ein SELECT.

$felt = mysqli_real_escape_string ($kobling,$felt). Fjernar spesialtgn frå $felt slik at det kan brukast som input til databasen.

Kommentar

*Det er ikkje heilt klart for meg korfor vi ikkje kan bruka $resultat direkte, men må gjera ein fetch. Men alle gjer det slik!

LENKER

The MySQLi Extension Function Summary