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
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.
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
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?
Nojsa Juniormester
17. februar 2019 - 16:31 #4
Det var ellers noget mega advanceret noget du kom med der :p
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.
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?
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']
Nojsa Juniormester
17. februar 2019 - 17:45 #8
hvad er det så jeg skal gøre? fordi så er jeg slet ikke med?
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.
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?!?
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é.
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!
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

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





Premium
Her er verdens 10 bedste outsourcing-leverandører: Se listen her
For tredje år i træk vinder samme it-outsourcingleverandør førstepladsen på liste over verdens bedste. 85 leverandører er blevet vurderet inden for 26 kategorier for at kunne skære feltet ind til de 10 bedste. Se hele listen her.
Computerworld
Google blokerer med omgående virkning for Huaweis brug af Android-licenser - se hvad det kommer til at betyde for dig
Google begrænser med omgående virkning kinesiske Huaweis brug af Android. Huawei vil ikke længere have adgang til tjenester fra Google.
CIO
Danske Joachim Ærtebjerg er med i toppen som CTO for Intel i EMEA - hør hans bud på it-udviklingen efter 25 år hos processor-giganten
Tech fra Toppen: Danske Joachim Ærtebjerg har arbejdet for Intel siden de lancerede Pentium-processoren i midten af 90´erne. I dag er han CTO for EMEA-området - og giver her sit bud på it-udviklingen.
Job & Karriere
"Vi var fem mennesker, der fik 400 millioner kroner, et lokale på 12 m2 og et stempel fra Undervisningsministeriet. Det kalder jeg mit første start-up. Det blev til IT-Universitetet. "
"Da jeg var færdig med PhD´en så var vi fem mennesker, der fik 400 millioner kroner, et lokale på 12 m2 og et stempel fra Undervisningsministeriet. Så skulle vi bare have et nyt universitet op og køre på seks måneder. Det kalder jeg mit første start-up. Det blev til IT-Universitetet."
White paper
Her er din gratis guide til EDI!
EDI giver en hurtig, pålidelig og effektiv automatisk udveksling af forretningsdokumenter, og du slipper for de manuelle processer, som er forbundet med papirdokumenter. Det er især, hvis du er i detail og produktionsvirksomheder, samt grossister, at der er flere fordele ved at implementere EDI – uanset virksomhedens størrelse. Det gør at EDI i dag er den foretrukne metode til dokumentudveksling blandt større virksomheder, når de skal handle med deres leverandører. Derfor har du som leverandør en stor konkurrencefordel, hvis du understøtter EDI – det styrker samhandlen med eksisterende kunder, og gør jer mere attraktive overfor potentielle nye kunder. Dette whitepaper giver dig en introduktion til EDI, og hvordan det fungerer, samt vejledning til hvordan du kommer i gang og vælger den rette leverandør.