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.
$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);
$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'
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.
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.
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
$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); ?>
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.
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.
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.