17. februar 2019 - 15:49Der er
11 kommentarer og 1 løsning
mysqli_query
Hej eksperter!
Har undret mig meget over noget den sidste tid. Har givet mig i kast med at tage mine php færdigheder lidt op til overfladen.
Har set så mange tutorials på hvordan man hiver data ud af en mysql database, men alle bruger en while løkke. Er det, det eneste rigtige at gøre det selv om at man kun vil hive en enkel kolonne ud, noget der ligner det her:
$sql = "SELECT * FROM tabel WHERE id = 1";
Har brugt en del tid på at greje ud hvad det er jeg skal gøre, og syntes umiddelbar er mega skørt at smide det ind i en while løkke? Skal altså sige at jeg har taget en webintegrator udannelse for 10 år siden blandet med at jeg nok har glemt en hel del! Ked af hvis jeg har misset noget lign her inde på eksperten.dk...
Ja undskyld, forvirrer altid rækker med kolonner, lol.
men hvis nu at jeg laver en WHERE statement i 'queryien' som sorterer noget som er unikt såsom en id, er det så ikke mega skørt at proppe det ind i en while løkke?
$sql = "SELECT * FROM tabel WHERE id = 1;"; $result = mysqli_query($conn, $sql);
Jeg er ikke særlig kreativ med lærer af nogle simple eksempler... Og nej jeg ved ikke hvad alle de funktioner gør. Har mega svært at forstå det nogle gange. ved knap nok hvad den function mysqli_fetch_assoc overhovedet er beregnet til. Et eller noget andet med at smide nogle data ind i et array kunne jeg forestille mig?
Men det eksempel gør netop ikke hvad du selv nævnte, at kun hive én række ud ifølge et id, hvor du ved der altid er en. Det gør det modsatte: hiver alt ud fra MyGuests tabellen. Når der kan være flere rækker, så giver løkken netop mening. Når du ved med sikkerhed at der er præcis 1 (eller mellem 0 og 1), så gør den ikke.
Og fetch_assoc hiver én række ud af databasen og formaterer den som en associativ array, som du kan hive data fra med f.eks. $array['kolonnenavn']
Nøjagtig det samme som med løkke, bare uden løkke.
I dit eksempel fra før, hvor der stod:
while ($row = $result->fetch_assoc()) { // ... }
Der fjerner du bare løkken - eller bedre, erstatter den med en if-sætning for at tjekke for muligheden af 0 rækker (f.eks. brugeren findes ikke), så det bliver til:
if ($row = $result->fetch_assoc()) { // ... }
Hvis du er helt sikker på at der aldrig er 0 rækker, og altid præcis en, kan du sådan set bare gøre:
$row = $result->fetch_assoc();
- Men som regel er man ikke helt sikker på det, så det er sjældent en god idé.
nå okay, det var det som jeg ikke fattede et brik af. Og det var lige det jeg havde brug for. jeg havde prøvet noget lign, men måtte åbenbart have en fejl et eller et andet sted. men det virker perfekt nu. Tak skal du have!
Synes godt om
1 synes godt om dette
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.