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!