Invoegen lukt niet [wist geen betere titel]
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
if(!mysql_query("INSERT INTO nieuwsbrief (e-mail) VALUES ('$email')")){
echo "Dit e-mail adres kwam al eerder voor!";
}else{
echo "Uw e-mail adres is succesvol toegevoegd!";
}
?>
if(!mysql_query("INSERT INTO nieuwsbrief (e-mail) VALUES ('$email')")){
echo "Dit e-mail adres kwam al eerder voor!";
}else{
echo "Uw e-mail adres is succesvol toegevoegd!";
}
?>
Database is zo:
CREATE TABLE `nieuwsbrief` (
`e-mail` tinyint(255) NOT NULL,
UNIQUE KEY `e-mail` (`e-mail`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Nu geeft hij altijd de melding Dit e-mail adres kwam al eerder voor!
Hoe kan dit?
Gr paul
Daarnaast is je foutafhandeling ook niet helemaal correct. Je gaat er vanuit dat als je query mislukt, dat het email al in de database staat. Dit is echter maar 1 van de weinige fouten die op kunnen treden bij een mysql query. Gebruik voor de foutafhandeling dus altijd de functie mysql_error() om te kijken wat er daadwerkelijk fout gaat...
enne die foutafhandelijk is voor de mensen :P
bij het testten heb ik natuurlijk wel mysql_error() enz
Voert hij nu geen $email in?
Quote:
Yeah right... Waarom krijg je dan geen andere foutmelding tijdens het testen?enne die foutafhandelijk is voor de mensen :P
bij het testten heb ik natuurlijk wel mysql_error() enz
bij het testten heb ik natuurlijk wel mysql_error() enz
De foutafhandeling is niet correct. Wanneer de query mislukt, wil dat niet zeggen dat een waarde reeds in de database staat. Wanneer jij een goede foutafhandeling had toegepast, dan had je ook al lang een melding gekregen dat het veld 'e' niet bestaat. Net zo min als het veld 'mail'... En deze 2 van elkaar aftrekken gaat dus niet lukken. Met een - (min) voer je een berekening uit!
Kortom, de kolomnaam is niet correct!
Oplossingen:
- Zorg voor een betere foutafhandeling.
- Kies een betere kolomnaam
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Maar goed, bedankt frank!