Invoegen lukt niet [wist geen betere titel]

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Paul K

Paul K

04/01/2007 13:41:00
Quote Anchor link
Ik doe zo de e-mail adressen in de db

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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!";
}

?>


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
 
PHP hulp

PHP hulp

19/11/2024 14:44:18
 
Joren de Wit

Joren de Wit

04/01/2007 13:47:00
Quote Anchor link
Een email in een tinyint? Daar zit je fout! Dat moet natuurlijk een varchar zijn...

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...
 
Paul K

Paul K

04/01/2007 13:51:00
Quote Anchor link
Met varchar lukt het ook niet....

enne die foutafhandelijk is voor de mensen :P
bij het testten heb ik natuurlijk wel mysql_error() enz
 
Zim Zim

Zim Zim

04/01/2007 13:54:00
Quote Anchor link
is het niet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(!mysql_query("INSERT INTO nieuwsbrief (e-mail) VALUES ('".$email."')")){
?>

Voert hij nu geen $email in?
 
Frank -

Frank -

04/01/2007 13:57:00
Quote Anchor link
Quote:
enne die foutafhandelijk is voor de mensen :P
bij het testten heb ik natuurlijk wel mysql_error() enz
Yeah right... Waarom krijg je dan geen andere foutmelding tijdens het testen?

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 -
 
Paul K

Paul K

04/01/2007 13:59:00
Quote Anchor link
ik had eerst mysql_error 8o| en toen gaf ie niks :S
Maar goed, bedankt frank!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.