Avatar billede Nojsa Juniormester
17. februar 2019 - 15:49 Der 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...

Jonas
Avatar billede arne_v Ekspert
17. februar 2019 - 16:24 #1
Den klasssike while loekke efter en query har intet me dkolonner at goere - den relaterer sig til raekker.

En while loekke er meget praktisk, hvis der er 0-mange raekker.

Hvis der er 0 eller 1 raekke, saa er en if saetning god nok.
Avatar billede arne_v Ekspert
17. februar 2019 - 16:25 #2
Samenlign f.eks. get_one of get_all her:

http://www.vajhoej.dk/arne/articles/phpdb.html#mysqli_oo
Avatar billede Nojsa Juniormester
17. februar 2019 - 16:27 #3
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);

Er det mig som ikke ser noget som du ser?
Avatar billede Nojsa Juniormester
17. februar 2019 - 16:31 #4
Det var ellers noget mega advanceret noget du kom med der :p
Avatar billede Slater Ekspert
17. februar 2019 - 16:41 #5
"er det så ikke mega skørt at proppe det ind i en while løkke? "

Som Arne allerede sagde, jo. Det er det. Lad være med det.
Avatar billede Nojsa Juniormester
17. februar 2019 - 17:22 #6
et eksempel måske ville være meget dejligt. For som i kan se kommer w3schools alt ind i en while løkke,

https://www.w3schools.com/php7/php7_mysql_select.asp

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?
Avatar billede Slater Ekspert
17. februar 2019 - 17:37 #7
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']
Avatar billede Nojsa Juniormester
17. februar 2019 - 17:45 #8
hvad er det så jeg skal gøre? fordi så er jeg slet ikke med?
Avatar billede Slater Ekspert
17. februar 2019 - 17:52 #9
Hvis der er flere rækker: løkke.

Hvis der er én række: ikke løkke.
Avatar billede Nojsa Juniormester
17. februar 2019 - 17:53 #10
ja det er jeg godt klar over. Men jeg kan ikke finde nogle eksempler på hvordan man gør?!?
Avatar billede Slater Ekspert
17. februar 2019 - 17:57 #11
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é.
Avatar billede Nojsa Juniormester
17. februar 2019 - 18:02 #12
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!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester