Interaktion Med Databasen I PHP

Det følgende beskriver hvordan PHP henter data fra datalaget; mere specifikt hvordan der hentes data fra databasen for et enkelt blog indlæg.

<?php
 
require_once("db.php");
 
$id = $_GET['id'];
$post_sql = "SELECT * FROM posts WHERE id = ?";
$post = db_query_get($sql, array($id));
 
$author_sql = "SELECT * FROM users WHERE id = ?";
$author = db_query_get($author_sql, array($post['user_id']));
 
echo("Brugerens email: " . $author['email']);
echo("Blog post titel: " . $post['title']);
echo("Blog post body: " . $post['body']);
 
?>

Den første linje med require_once inkluderer hjælper funktioner til at interagere med databasen; deriblandt funktionen db_query_get. Denne funktion henter en enkelt række ud af databasen, og tager som argument SQL udtrykket og en liste af værdier til at indsætte i dette udtryk.

$post_sql = "SELECT * FROM posts WHERE id = ?";
$post = db_query_get($sql, array($id));

Næste linje indeholder SQL udtrykket til at hente et blog-indlæg med et bestemt id. I burde kunne genkende SQL udtrykket, bortset fra at
det indeholder et ?. ? er en krog hvorpå der hænges data. Grunden til at vi ikke bare gør noget som $sql = "SELECT * FROM posts WHERE id = $id"; er at det udgør en alvorlig sikkerhedstrussel. Det er brugeren der i sin webbrowser angiver værdien af $id, og denne kunne derfor angive fx SQL udtrykket til at fjerne al data fra databasen. ? sikrer mod dette.

Til sidst eksekveres SQL-udtrykket mod databasen, med værdien af $id hængt på krogen og resultatet gemmes i variablen $post.

$author_sql = "SELECT * FROM users WHERE id = ?";
$author = db_query_get($author_sql, array($post['user_id']));

På HTML siden for indlæg vises skribentens brugernavn.Det enkelte blog indlæg der blev hentet ud af databasen, inkluderer kun user_id'et på skribenten. Derfor er vi nødt til at foretage endnu et opslag i databasen for at hente alle brugerens data.

echo("Brugerens email: " . $author['email']);
echo("Blog post titel: " . $post['title']);
echo("Blog post body: " . $post['body']);

De sidste linjer skriver værdierne ud. I den rigtige applikation sendes disse data til HTML skabalonen. Du kan også benytte funktionen var_dump til at skrive hele indholdet ud af en variabel; i så fald vil det være:

var_dump($post);
Medmindre andet er angivet, er indholdet af denne side licenseret under Creative Commons Attribution-NonCommercial 3.0 License