Avatar billede dallan2007 Nybegynder
24. august 2012 - 08:28 Der er 4 kommentarer og
1 løsning

Grundlæggende udtræk fra en MySQL database?

Jeg har leget med php og mysql i flere år, men stadigvæk kan nogle af de helt basale funktioner forvirre og måske direkte irritere mig. Mit spørgsmål går på helt basale udtræk fra en database.

Dette er fra w3schools#

<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("my_db", $con);

$result = mysql_query("SELECT * FROM Persons");

while($row = mysql_fetch_array($result))
  {
  echo $row['FirstName'] . " " . $row['LastName'];
  echo "<br />";
  }

mysql_close($con);
?>


http://www.w3schools.com/php/php_mysql_select.asp

-----------------

Eksemplet fra w3schools bruger den helt standard While Loop som jeg ser de fleste steder, men kan man ikke tager data ud uden at køre det igennem en løkke? Giver dette $row = mysql_fetch_array($result) kun en enkelt række? Er det derfor man skal køre en løkke?

Hvis jeg nu skal bruge den samme data flere steder på siden, er det så nødvendigt at smide det hele ud i et array a la dette:

$temp = array();
$i = 0;

while($data = mysql_fetch_array($query)){
$temp[$i] = $data[navn]."</br>";
$i++;
}


Forvirrende, men måske ikke? :o)
Avatar billede Panen Nybegynder
24. august 2012 - 09:31 #1
Hvis du kigger på denne linje:
$result = mysql_query("SELECT * FROM Persons");

* betyder at du vælger ALLE rækker fra tabellen Persons.

Når du gør dette bør du også benytte dig af alle, altså lave et While Loop ja. Hvis du derimod kun skal bruge 1 række, ja så laver du din SQL Query lidt anderledes for ikke at lave performancehuller.

Hvis du vil benytte flere rækker, flere steder på din side kan du med god grund læse dem ind i et array.

while($row = mysql_fetch_assoc($query))
{
  $newarray[] = $row;
}

Nu har du dine rækker i $newarray.
Avatar billede dallan2007 Nybegynder
24. august 2012 - 13:33 #2
Bum bum...

Lad os antager vi har en database som hedder kunder, og som består af 2 række, hhv. navn og alder:

Peter | 30
Susanne | 21
Viggo | 34

Hvis jeg nu laver dette:

mysql_connect("localhost","bruger","kode") or die("Could not connect: " . mysql_error());
mysql_select_db("database");
$query = mysql_query("Select * FROM kunder") or die(mysql_error());
$data = mysql_fetch_array($query);


Hvis jeg så skal have skrevet navnet et par vilkårlige steder, så var min ide at bruge $data[navn]. Det virker også fint, men den skriver kun det ene navn (Peter) og går ikke automatisk videre til næste navn når jeg senere skriver $data[navn] igen. Den skriver igen Peter og ikke Susanne.

Det er her jeg lurer på, om $data kun indeholder (Peter,30) og ikke andet information. Kan man evt. lave $data om til et array, eller er jeg helt galt afmarcheret.?
Avatar billede NielsErikP Mester
24. august 2012 - 23:10 #3
Hej...

#2: .. $data[navn] er et array, hvilket dette sige :


$data[0]= Peter
$data[1]= Susanne
$data[2]= Viggo



Men da du aldrig tæller navn op, bliver den ved med at være 0 og udskriver derfor Peter hver gang du udskriver $data[navn] ..
Derfor kan man med fordl tæller navn op ved hjælp af en while -løkke.
Avatar billede dallan2007 Nybegynder
15. oktober 2012 - 12:33 #4
Hej Niels, smid et svar :o)
Avatar billede NielsErikP Mester
15. oktober 2012 - 12:47 #5
Hej ...

Får du her :-)
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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