Avatar billede bullefardk Nybegynder
30. september 2005 - 19:57 Der er 20 kommentarer

Indsætter ikke i mysql?

Hej alle.

Jeg er igang med en ny portal med alt muligt.
Men min bruger oprettelse fucker lidt.

www.Hotpige.dk når man opretter en bruger sætter den simpelthen ikke informationerne ind i mysql databasen. og den er connected til databasen.

Sådan her ser min make.php ud:

<?
$brugernavn = $_POST["brugernavn"];
$kodeord = $_POST["kodeord"];
$navn = $_POST["navn"];
$email = $_POST["email"];
$alder = $_POST["alder"];
$by = $_POST["by"];


//insert the values
$result= MYSQL_QUERY("INSERT INTO users (id, brugernavn, kodeord, navn, email, alder, by)".
  "VALUES ('NULL', '$brugernavn', '$kodeord', '$navn', '$email', '$alder', '$by')");
 
echo "Brugernavn, kodeord og dit fulde navn er lagt ind i databasen :)";
?>

Hvis det kan lade sig gøre, er der så en der kan lave et script med hvis brugernavn er taget, så skriver den at brugernavnet er taget?

Med Venlig hilsen

Michael / bMan
Avatar billede jaw Nybegynder
30. september 2005 - 20:01 #1
Prøv lige at ændre til:
$result= MYSQL_QUERY("INSERT INTO users (id, brugernavn, kodeord, navn, email, alder, by)".
  "VALUES ('NULL', '$brugernavn', '$kodeord', '$navn', '$email', '$alder', '$by')") or die(mysql_error());

Så vil du få en debug-meddelelse.
Avatar billede jaw Nybegynder
30. september 2005 - 20:04 #2
Det andet kan nemt løses ved at gøre brugernavn unikt i din tabel, altså at der kun kan være én række med brugernavnet, og så:

if(mysql_affected_rows() == 0) {
  echo "Der skete en fejl ved indsættelsen. Brugernavnet kan være optaget!";
} else {
  echo "Brugernavn, kodeord og dit fulde navn er lagt ind i databasen :)";
}
Avatar billede jaw Nybegynder
30. september 2005 - 20:06 #3
Din første fejl skyldes nok, at "by" er et reserveret ord i mysql.

Du kan løse dette problem ved at sætte ` rundt om by (kan du også gøre om alle andre ord), altså :
$result= MYSQL_QUERY("INSERT INTO users (`id`, `brugernavn`, `kodeord`, `navn`, `email`, `alder`, `by`)".
  "VALUES ('NULL', '$brugernavn', '$kodeord', '$navn', '$email', '$alder', '$by')");

Du kan se listen over reserverede ord her: http://dev.mysql.com/doc/mysql/en/reserved-words.html
Avatar billede bullefardk Nybegynder
30. september 2005 - 20:08 #4
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'by)VALUES ('NULL', 'test', 'test', 'test', 'test', 'test', 'test


siger den nu
Avatar billede jaw Nybegynder
30. september 2005 - 20:09 #5
Det passer jo så ret godt overens med mit gæt :)

Bemærk forresten også, at det ikke er ' (apostrof) men ` (som jeg ikke lige kan huske navnet på).
Avatar billede bullefardk Nybegynder
30. september 2005 - 20:11 #6
nu ser min make.php sådan her ud:

<?
$brugernavn = $_POST["brugernavn"];
$kodeord = $_POST["kodeord"];
$navn = $_POST["navn"];
$email = $_POST["email"];
$alder = $_POST["alder"];
$by = $_POST["by"];

//insert the values
result= MYSQL_QUERY("INSERT INTO users (`id`, `brugernavn`, `kodeord`, `navn`, `email`, `alder`, `by`)".
"VALUES ('NULL', '$brugernavn', '$kodeord', '$navn', '$email', '$alder', '$by')");

if(mysql_affected_rows() == 0) {
echo "Brugernavnet er optaget. Prøv igen med et andet.";
} else {
echo "Din Bruger er nu oprettet :)";
}
?>

Men får stadig fejl:

Parse error: parse error, unexpected '=' in /var/www/hotpige.dk/make.php on line 10
Avatar billede arne_v Ekspert
30. september 2005 - 20:13 #7
er du sikker på at du mener 'NULL' og ikke NULL ?
Avatar billede jaw Nybegynder
30. september 2005 - 20:13 #8
Du mangler dit $ foran result -> $result
Avatar billede bullefardk Nybegynder
30. september 2005 - 20:17 #9
Yes.. nu virker det thx.. men det virker stadig ik med hvis der er et brugernavn der er taget..
Avatar billede arne_v Ekspert
30. september 2005 - 20:19 #10
kan du ikke

if($result) {

?
Avatar billede bullefardk Nybegynder
30. september 2005 - 20:20 #11
se den forstår jeg ikke.. kan jeg ikke få hele koden? er stadig lidt newb
Avatar billede arne_v Ekspert
30. september 2005 - 20:22 #12
i.s.f.

if(mysql_affected_rows() == 0) {
Avatar billede bullefardk Nybegynder
30. september 2005 - 20:24 #13
Det er jo den kode jeg har nu,
if(mysql_affected_rows() == 0) {
echo "Brugernavnet er optaget. Prøv igen med et andet.";
} else {
echo "Din Bruger er nu oprettet :)";
}
Avatar billede arne_v Ekspert
30. september 2005 - 20:25 #14
if($result) {
echo "Din Bruger er nu oprettet :)";
} else {
echo "Brugernavnet er optaget. Prøv igen med et andet.";
}
Avatar billede bullefardk Nybegynder
30. september 2005 - 20:37 #15
det virker stadig ik :s den opretter stadig 2 table i databasen som er total ens
Avatar billede arne_v Ekspert
30. september 2005 - 20:48 #16
sæt et unikt index på brugernavn
Avatar billede arne_v Ekspert
30. september 2005 - 20:48 #17
evt. også på email
Avatar billede bullefardk Nybegynder
30. september 2005 - 20:51 #18
how?
Avatar billede bullefardk Nybegynder
30. september 2005 - 20:53 #19
Li meget... Fandt ud af det :D

THxx
Avatar billede arne_v Ekspert
30. september 2005 - 20:55 #20
PHPMyAdmin eller hvad du nu bruger
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

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