Avatar billede tobiasfp Nybegynder
20. oktober 2008 - 14:33 Der er 19 kommentarer

At få data ud fra en MYSQL database, muligvis varchar problem.

Jeg har et problem, udfra min kode nederst på siden kan jeg ikke få data ud fra min mysql database. Når jeg sletter "WHERE email = '$UN'" skriver den alle emails, koder, og fornavne i databasen, dette er mit første login system jeg prøver at lave.

I sqlyog vises der under tabellernes indexer nogle mærkelige firkanter, som f.eks. under first_name hedder jeg:
            Tobias 
Her i exploren vises firkanterne som mellemrum.

Nogen der kan hjælpe mig?

Mvh Tobi

<?php
$UN = $_POST['UN'];
$PASS = $_POST['PASS'];
print $UN;

$username = "root";
$password = "";
$hostname = "localhost";   
$dbh = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
print "Databaseprotokollen er fundet<br>";
$selected = mysql_select_db("ungjobber",$dbh)
    or die("Kunne ikke åbne databasen");
print "Forbundet med databasen<br>";



$query  = "SELECT email, kode, first_name FROM people WHERE email = '$UN'";
/*Her har jeg også prøvet en email som står i databasen, f.eks. WHERE email = 'tobi-fp@hotmail.com'";
*/
$result = mysql_query($query);

while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
    echo "Email :{$row['email']} <br>" .
        "Kode : {$row['kode']} <br>" .
        "Fornavn : {$row['first_name']} <br><br>";
}



?>
Avatar billede michael_stim Ekspert
20. oktober 2008 - 14:40 #1
"SELECT email, kode, first_name FROM people WHERE email = '".$UN."'";
Avatar billede tobiasfp Nybegynder
20. oktober 2008 - 14:48 #2
Stadig ingen held :S
Prøvede også SELECT email, kode, first_name FROM people WHERE email = '".tobi-fp@hotmail.com."'"; i mysql shell, men intet :(
Avatar billede arne_v Ekspert
20. oktober 2008 - 21:42 #3
Jeg forstaar ikke:

$query  = "SELECT email, kode, first_name FROM people WHERE email = '$UN'";

Normalt betyder UN UserName ikke email.

Og det er ikke overraskende at der ikke er nogen email adresser som matcher en
email adresse.

Men proev og udskriv $query og se hvad den indeholder.
Avatar billede tobiasfp Nybegynder
20. oktober 2008 - 23:31 #4
$UN er også username, men på mit site er brugernavnet det samme som ens email.

Når min kode ser ud som teksten øverst +

print $query;

Vises denne tekst:

tobi-fp@hotmail.comDatabaseprotokollen er fundet
Forbundet med databasen
SELECT email, kode, first_name FROM people WHERE email = 'tobi-fp@hotmail.com'

Hvilket jo virker logisk..
Tak i forvejen :)
Avatar billede erikjacobsen Ekspert
20. oktober 2008 - 23:33 #5
Så må alle i tabellen people jo have samme email. Mon du har et problem i opdateringen af tabellen, og ikke i visningen?
Avatar billede erikjacobsen Ekspert
20. oktober 2008 - 23:36 #6
Nej, jeg fik læst det forkert. Det er nærmere at der ikke står det rigtige i tabellen. Når du kigger i phpmyadmin, eller hvad du ellers bruger til at kigge på din database, så kan du se hvad der står i felterne. Det bør afsløre hvor problemet ligger.
Avatar billede arne_v Ekspert
21. oktober 2008 - 07:26 #7
Check specielt om der er kommet ' eller " ind i feltets vaerdi !
Avatar billede tobiasfp Nybegynder
21. oktober 2008 - 09:06 #8
Der er ikke kommet 'eller' ind..

Som beskrevet i min første post så står der bl.a. i min tabel

'            Tobias  '

(Selvfølgelig uden ')..
Hvilket vil sige at der er en masse mellemrum..
Men jeg har læst om databaser og det skulle være meget normalt at resterende tegn, hvis varchar f.eks. er 50, at de overskydende bliver fyldt ud med mellemrum.
Avatar billede arne_v Ekspert
21. oktober 2008 - 09:10 #9
Det er med CHAR ikke med VARCHAR.

Er der ekstra mellemrum saa skal du ikke forvente at = testet matcher.
Avatar billede tobiasfp Nybegynder
21. oktober 2008 - 09:19 #10
Her er hvad min $query giver når jeg "print $query":

SELECT email, kode, first_name FROM people WHERE email = 'tobi-fp@hotmail.com'

Hvilket jo ser helt rigtigt ud efter min mening..
Avatar billede erikjacobsen Ekspert
21. oktober 2008 - 09:22 #11
Hvad står der så i feltet med email?
Avatar billede arne_v Ekspert
21. oktober 2008 - 09:22 #12
Ikke hvis der er mellemrum i vaerdien i databasen.
Avatar billede tobiasfp Nybegynder
21. oktober 2008 - 09:25 #13
Jeg har nu fundet årsagen til problemet, så tusinde tak for det:)

Det ser ud til at mit script der skriver til databasen, hvilket ser ud som nedenfor skriver en masse mellemrum i min database. Jeg slettede disse mellemrum med sqlyog, og nu virker det..
Kan i se nogle fejl i mit script her?

Tusinde tak for hjælpen indtil videre, det er kanon i gider at hjælpe

    <?php
$list = $_POST['list'];

$EN = $_POST['EN'];
$FN = $_POST['FN'];
$AL = $_POST['AL'];
$BY = $_POST['BY'];
$PN = $_POST['PN'];
$EM = $_POST['EM'];
$KD = $_POST['KD'];
$name = <<<here
$FN $EN
here;

$username = "root";
$password = "";
$hostname = "localhost";   
$dbh = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
print "Databaseprotokollen er fundet<br>";
$selected = mysql_select_db("ungjobber",$dbh)
    or die("Could not select first_test");
print "Forbundet med databasen<br>";
$query = 'SELECT ID FROM people';
$result = mysql_query($query);
$nummer = (mysql_num_rows($result));
$nummer1 = $nummer+1;

if (mysql_query("insert into people values('$nummer1','$FN','$EN','$AL','$BY','$PN','$EM','$KD')")) {
  print "Du er nu inde i vores system, og du modtager snart en mail fra os.";
}
else {
      print "Vi kunne ikke oprette dig, kontakt os venligst.";
}

// you're going to do lots more here soon
mysql_close($dbh);
?>
Avatar billede michael_stim Ekspert
21. oktober 2008 - 09:27 #14
Du kan evt. kigge på funktionen TRIM, bare så det ikke sker igen.
Avatar billede tobiasfp Nybegynder
21. oktober 2008 - 09:52 #15
Kanon..
Funktionen hjalp mig og har også fundet roden af problemet nu :)

Hvordan giver jeg point?
Avatar billede erikjacobsen Ekspert
21. oktober 2008 - 10:07 #16
Det er måske i din <form> du har fået for mange blanke med. Trim er dog altid en god ide.
Dit ID kunne med fordel være autoincrement. Har du flere brugere der opretter sig præcis samtidig, kan de få samme nummer med din kode.
Jeg samler slet ikke ikke på point, tak.
Avatar billede tobiasfp Nybegynder
21. oktober 2008 - 10:29 #17
Cool.. Jeg er meget ny, så jeg ved ikke engang hvad autoincrement er..
Avatar billede michael_stim Ekspert
21. oktober 2008 - 10:35 #18
Autoincrement gør at databasen selv finder det næste ledige nummer i tabellen, når der bliver lagt en post til. Så behøver man ikke tænke på om det er et unikt nummer, hvis man ikke har en anden given primærnøgle.
Avatar billede erikjacobsen Ekspert
21. oktober 2008 - 10:36 #19
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
Computerworld tilbyder specialiserede kurser i database-management

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