Avatar billede webcreator Nybegynder
15. maj 2003 - 10:14 Der er 20 kommentarer og
2 løsninger

Hent data fra DB

Hej.

Jeg har nu rodet med PHP og MySQL de sidste par dage - og jeg må sige, at jeg er mindre tilfreds med måden hvorpå PHP arbejder med at hente data. Den virker ikke videre logisk.

Nogen der kan se fejl her :

<?php

$bruger = "Admin";

$conn = mysql_connect("localhost", "usr", "psw");
mysql_select_db("db");
$resultat = mysql_query("select pass from users where user = $bruger");

while ($raekke = mysql_fetch_array($resultat)) {
  echo "password: ".$raekke['pass'];
};

?>

Yderligere vil jeg meget gerne have links til guides mm. der kan forklare tingene ordentligt :)
Avatar billede razor Nybegynder
15. maj 2003 - 10:21 #1
Hvad er det der ikke virker logisk? :-)
Avatar billede webcreator Nybegynder
15. maj 2003 - 10:26 #2
well, er bare vant til ASP, hvor man blot skaber forbindelse til Access-databasen, og efterfølgende bruger man rs til at hente data med. Det er da meget nemmere :)
Avatar billede webcreator Nybegynder
15. maj 2003 - 10:27 #3
I PHP skal du bruge While-sætninger, variabler og hvad ved jeg ? :)
Avatar billede webcreator Nybegynder
15. maj 2003 - 10:32 #4
Findes der ikke en løsning som den i ASP ?
Avatar billede webcreator Nybegynder
15. maj 2003 - 11:22 #5
Hvad er der fx. galt her :

$raek = mysql_fetch_array($resultat);
echo "password: ".$raek[pass];

hurde en sådan handling ikke være muligt ? Eller er problemet, at databasen ikke blever gennemløbet, og derfor kun når til første række ?
Avatar billede sito Nybegynder
15. maj 2003 - 11:42 #6
echo "password: ".$raekke[pass];
Avatar billede webcreator Nybegynder
15. maj 2003 - 11:46 #7
Sito > Som du kan se, så har jeg også prøvet dette. Kan jeg ikke bruge førnævnte løsning ?
Avatar billede avminarm Juniormester
15. maj 2003 - 11:51 #8
jeg tor måske prob liggei $bruger - hvor kommer den fra - hvis det er fra en form skal den måske hedde $_POST['bruger'] og så skal du putte '' omkring
Avatar billede sito Nybegynder
15. maj 2003 - 12:13 #9
Du er sikker på at du har en værdi i db der hedder Admin, og et feltnavn der hedder bruger?
Avatar billede sito Nybegynder
15. maj 2003 - 12:16 #10
feltnavn bruger ligegyldigt, sorry.
Avatar billede webcreator Nybegynder
15. maj 2003 - 14:13 #11
Jeg har fundet fejlen - her :
$resultat = mysql_query("select pass from users where user = $bruger");

Problemet ligger ved "where user = $bruger" - men hvad kan jeg så skrive i stedet ?
Avatar billede sito Nybegynder
15. maj 2003 - 14:23 #12
Kan du ikke slette din $bruger, og istedet skrive;

$resultat = mysql_query("select pass from users where user = Admin");
Avatar billede webcreator Nybegynder
15. maj 2003 - 14:28 #13
Ideen er jo netop, at admin skal kunne erstattes af en hvilken som helst person, som lagres i en variabel (username kommer fra en form, og skal derfor requestes)
Avatar billede cbolvig Nybegynder
15. maj 2003 - 14:35 #14
Prøv at lægge din querytekst i en variabel og husk apostroffer om din textværdi:
$query="select pass from users where user = '".$bruger."'";
echo $query; #får du så hvad du venter?
$resultat = mysql_query($query);
Avatar billede tipsen Nybegynder
15. maj 2003 - 14:38 #15
Prøv med:

Jeg har fundet fejlen - her :
$resultat = mysql_query("select pass from users where user = '$bruger'");

og husk, at PHP er case-sensitive med variabelnavne ligesom mysql er det - det er ASP ikke så vidt jeg ved...
Avatar billede webcreator Nybegynder
15. maj 2003 - 14:39 #16
Well, jeg fandt selv ud af det. Flg. blev løsningen :
$resultat = mysql_query("select pass from users where user='$bruger'");

- og nu jeg sidder og kigger spm'et igennem, så kan jeg se, at jeg havde overset en ganske klog kommentar fra AvMinArm, som gav mig ideen til løsningen.
- Tak :)

Smider du et svar ?
Avatar billede webcreator Nybegynder
15. maj 2003 - 14:40 #17
Tipsen > Hov, havde ikke set din kommentar. Men din var jo meget nøjagtig, så du får også lidt points ;-)

- smid et svar :)
Avatar billede sito Nybegynder
15. maj 2003 - 14:41 #18
Okay. Du har lavet en formular på en anden side, som du sender til denne fil vha. action. Er dette korrekt?
Avatar billede tipsen Nybegynder
15. maj 2003 - 14:42 #19
Dvs. alt i alt: (for lige at lære dig lidt "pæn" kode!)

<?php

$bruger = 'Admin';
//kobler op og giver fejlmeddelelse ved kiks!
$conn = mysql_connect('localhost', 'usr', 'psw') or die(mysql_error());
//vælg db og giv fejl ved kiks
mysql_select_db('db') or die(mysql_error());
//udfør forespørgsel og giv fejl ved problemer
$res = mysql_query("select pass from users where user = '$bruger'") or die(mysql_error());
//alternativ udtrækning:
while (list($pass) = mysql_fetch_row($res)) {
  echo "password: $pass";
}
?>

og hvis det er forventet, at forespørgslen altid returnerer en eller 0 rækker fra tabellen behøver du ikke en while-løkke.
Avatar billede tipsen Nybegynder
15. maj 2003 - 14:44 #20
Så vil jeg da lige følge op med svar :-)
Avatar billede webcreator Nybegynder
15. maj 2003 - 16:17 #21
Tipsen > Mange tak for "tips'en" :-)
Er glad for, at du gider ta' dig tid til lige at rette min kode lidt til :-)

- Også tak til jer andre.

AvMinArm > Smider du et svar ?
Avatar billede avminarm Juniormester
17. maj 2003 - 23:28 #22
ok
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