Query lijkt niet te werken?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Tim van Norde

Tim van Norde

20/04/2012 00:49:51
Quote Anchor link
Hey!

Ik zit met iets heel simpels, maar ik zie toch het probleem niet.
Ik heb het volgende geschreven om te kijken of de ingevulde email al in de database staat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
$sql = "
    SELECT " . self::record_id . " FROM " .
    self::table_email . " WHERE " .
    self::record_email . "='" . $email . "'";
    echo $sql;
    $res = mysql_query($sql);

    if (mysql_num_rows($res)>0)
    {
        return true;
    }
    
    return false;


De SQL query die er uit komt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT id FROM tvn_account WHERE email='emailadres'

Toch geeft mijn functie toch altijd terug dat de email niet bestaat. Ik weet zeker dat de email in de tabel staat, want het gebeurd ook als ik de pagina refresh waarna alle post-data opnieuw verzonden wordt.

Hoe kan dit? mysql_num_rows geeft niet aan dat de resource fout is, want dat is het niet. Ik weet zeker dat de tabel en de velden bestaan.

Misschien ben ik op het moment gewoon te moe om de fout te kunnen zien, wie weet vinden jullie iets?

- Tim
 
PHP hulp

PHP hulp

22/11/2024 06:11:14
 
Obelix Idefix

Obelix Idefix

20/04/2012 08:08:39
Quote Anchor link
De 'constructie' met self:: heb ik nog niet eerder gezien.
Wat ik in ieder geval mis: foutafhandeling. Nergens controleer je in je script of de query gelukt is. En wat als je de query direct op je database (via phpadmin) er op los laat?
 
Tim van Norde

Tim van Norde

20/04/2012 09:43:14
Quote Anchor link
Ik sla de email pas op in de database na dat ik het door deze functies heb gehaald:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mysql_real_escape_string(htmlentities($str));


Kan dat een probleem veroorzaken? Het werkt wel als ik direct in PHPMyAdmin de records in voer namelijk.
 
Kris Peeters

Kris Peeters

20/04/2012 09:58:18
Quote Anchor link
Ja, dat kan voor problemen zorgen.
Dit is de bedoeling niet.

Bij het INSERT'en (en UPDATE) van een record, moet je de gegevens door mysql_real_escape_string passeren. Dit doe je om de database te beschermen. MySQL-injection en zo.

htmlentities gebruik je enkel op het laatste moment, bij het SELECT'en; vooraleer je het (tussen je HTML) echo't. Dit dient om de gebruiker te beschermen tegen HTML.
Stel nu dat iemand als titel </div></div> invult; dan zou de layout van de site volledig naar de knoppen zijn. htmlentities zorgt er voor dat die karakters worden omgezet in HTML-inactieve karakters

htmlentities niet gebruiken vooraleer je iets INSERT of UPDATE. Ook htmlentities niet gebruiken als je strings wil comparen
Gewijzigd op 20/04/2012 10:11:07 door Kris Peeters
 
Tim van Norde

Tim van Norde

20/04/2012 10:41:21
Quote Anchor link
Oh, ik wist wel wat de functies deden (anders schrijf ik t niet) maar niet dat je htmlentities niet bij het inserten moest doen, heel logisch eigenlijk.
 
Kris Peeters

Kris Peeters

20/04/2012 10:53:49
Quote Anchor link
Ja.
Trouwens, je riskeert dan vlug dat data 2 keer door htmlentities passeert. Dan loopt sowieso van alles fout.

bv. & wordt &amp; . Passeer het twee keer door htmlentities en je krijgt &&amp;amp;
 
Tim van Norde

Tim van Norde

20/04/2012 11:49:24
Quote Anchor link
Bedankt, het is opgelost, ik opende een record en zag dat er een spatie aan het begin van de email werd toegevoegd.
 



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.