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



Seneste spørgsmål Seneste aktivitet
I går 23:04 Android Af ZeBa i Mobiltelefoner
I går 20:58 pdf filer Af evo i Andet software
I går 20:10 AutoKeys med undermacro Af per2edb i Access
I går 18:52 BSOD: system thread exception not handled Af Sten-hader-BSOD i Windows
I går 18:43 PowerBi Af micaud i Excel


Premium
En ny udbudslov kan se dagens lys i 2020: Få overblikket her
Evalueringen af den nuværende udbudslov blev sat i gang, da erhvervsminister Rasmus Jarlov udsendte et høringsbrev i demcember 2018. Lovforslaget og eventuelle ændringer forventes at ligge klar i 2020.
Computerworld
Yousee, Telmore og TDC Erhverv bliver nu en del af et helt nyt underholdningsselskab
TDC Group bliver i fremtiden splittet op i to selskaber, og det ene selskab, der kommer til at fokusere på digital underholdning har netop fået sit navn.
CIO
Tech fra Toppen: Det har CIO Mads Madsbjerg Hansen fra FLSmidth lært af flere års global it-konsolidering
Tech fra Toppen: Flere års arbejde har betydet en reduktion i antallet af it-systemer hos FLSmidth. Men processen har ikke været uden overraskelser. Hør hvad CIO Mads Madsbjerg Hansen har lært af den omfattende og globale proces.
Job & Karriere
Efter blodrødt regnskab: Nu fyrer Atea 20 medarbejdere i Danmark
Atea fyrer nu 20 medarbejdere. Det sker som en direkte konsekvens af, at den danske forretning er under pres, oplyser selskabets direktør.
White paper
Sikkerhedsimplikationerne ved digital transformation
I Fortinets rapport fra 2018 omkring sikkerhedsimplikationerne ved digital transformation, tages temperaturen på den aktuelle tilstand for Cybersecurity i organisationer rundt omkring i hele verden. Blandt de 300 respondenter viste der sig en række spændende trends. Her er et par stykker af dem: - Digital Transformation er den mest indflydelsesrige it-trend i organisationer i dag. Hele 92% svarede at det har stor indvirkning på deres forretning - Sikkerhed er den klart største udfordring i forhold til digital transformation. Hele 85% mener det har stor indvirkning på deres forretning Download hele rapporten her og få flere spændende findings.