static function

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Jerry php

Jerry php

17/09/2013 20:11:03
Quote Anchor link
Beste mensen,

ik ben een beetje bezig met het OOP programmeren. Nu ben ik een static function aan het maken voor de querys, zodat ik ze makkelijk kan aanroepen en uitvoeren, enkel weet ik niet precies wat ik aan het doen ben, of hoe ik het goed kan krijgen.

Hieronder zie je wat ik voor class heb gemaakt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
class query{
    
    public $query;
    
    public static function select($select, $from, $where){
        
        $query = mysql_query("SELECT ".$select."FROM ".$from."WHERE ".$where);
        return $query;
    }
}


Onderstaande code is een test van me, nog niet echt gebasseerd op een loginscript,
Zo roep ik mijn code aan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$getUser = query::select("*", "users", "1=1");
var_dump($getUser);


Het resultaat van de var_dump is: boolean false

Uiteraard heb ik de class geincluded, dus dat zit allemaal wel goed.
 
PHP hulp

PHP hulp

20/04/2024 05:34:27
 
Erwin H

Erwin H

17/09/2013 20:26:55
Quote Anchor link
Echo altijd even je query, zodat je precies ziet wat de query string is. Als je dan de fout nog niet ziet kan je altijd even proberen de query direct uit te voeren, in phpmyadmin, of in de command line tool van mysql.
Tevens wil je natuurlijk altijd in je query object zelf gaan kijken of een query lukt of niet en zo nee, een foutafhandeling toepassen. Lukraak het resultaat teruggooien is niet echt netjes.

In dit geval zal je dit krijgen:
SELECT *FROM usersWHERE 1=1

Met andere woorden, je mist een paar spaties.
 
Ward van der Put
Moderator

Ward van der Put

17/09/2013 20:27:57
Quote Anchor link
Wat is je vraag?

Met een WHERE 1=1 weten we wel hoe laat het is, maar kun je toch concreter worden?
 
Jerry php

Jerry php

17/09/2013 20:34:48
Quote Anchor link
Beste Erwin, ik heb zojuist de spaties toegevoegd,

mijn doel is eigenlijk nu dat ik ga controleren of de gebruikersnaam en password voorkomen in de database en dan iets returnen

maar ik weet 1. niet wat ik dan moet doen in mijn class, waar ik moet beginnen... en 2. wat ik moet returnen
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

17/09/2013 20:39:01
Quote Anchor link
Ik zie dat WHERE 1=1 weleens vaker voorbij komen, het praktische nut daarvan ontgaat mij volledig.
 
Jerry php

Jerry php

17/09/2013 20:42:02
Quote Anchor link
Nou, mijn gedachte gingen naar de function, omdat deze 3 waardes vraagt. En met de 1=1 geef ik de Where waarde mee 1=1. en dit is dus altijd waar
 
Ward van der Put
Moderator

Ward van der Put

17/09/2013 20:44:23
Quote Anchor link
Ger van Steenderen op 17/09/2013 20:39:01:
Ik zie dat WHERE 1=1 weleens vaker voorbij komen, het praktische nut daarvan ontgaat mij volledig.

ROFLMAOWPIMP… Het ”praktische nut” daarvan is controleren of een site gevoelig is voor SQL-injectie: 1=1 is altijd true, dus daarna kun ben je “binnen”.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

17/09/2013 20:50:15
Quote Anchor link
Code (SQL)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT user_name FROM users WHERE 1=1


Is hetzelfde als:
Code (SQL)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT user_name FROM users

Ga je in PHP ook dit doen?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if ( 1=1 )
echo 1;
else echo 'not 1';
?>

Denk ut niet!
Gewijzigd op 17/09/2013 20:51:13 door Ger van Steenderen
 
Erwin H

Erwin H

17/09/2013 20:58:04
Quote Anchor link
Volgens mij was het om te testen of zijn functie werkte. Dat was een goede test, want nu is hij erachter gekomen dat het dus niet werkte, en waarom.
Volgende stap is een query bedenken die ook nut heeft.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

17/09/2013 21:00:51
Quote Anchor link
@Ward, dan ga je helemaal nat! ;-)
 
Jerry php

Jerry php

17/09/2013 21:03:47
Quote Anchor link
Jongens, kunnen we het inderdaad houden op mijn vraag? Want ik ben allemaal aan het zoeken naar een oplossing en zou graag jullie inzet willen wanneer dit kan. ik heb nu dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
include 'config/config.database.php';

class query{
    
    public $query;
    
    public static function select($select, $from, $where){
        
        $query = mysql_query("SELECT ".$select." FROM ".$from." WHERE ".$where);
        
        if(mysql_num_rows($query) > 0){
            $query = true;
        }else{
            $query = "d";
        }
        return $query;
    }
}


dit stuur ik nu mee in mijn php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$getUser = query::select("*", "users", "WHERE username='".$_POST['username']."' AND password='".$_POST['password']."'");


Ik krijg enkel deze melding:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\website\libs\libs.query.php on line 12

Toevoeging op 17/09/2013 21:10:54:

De output is trouwens dit wanneer ik var_dump($getUser) gebruik:

string 'd' (length=1)
Gewijzigd op 17/09/2013 21:04:16 door Jerry php
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

17/09/2013 21:12:33
Quote Anchor link
Oké dan.
Heel simpel gezegd, je wilt iets met OOP doen en bouwt geen enkele foutafhandeling in.
Erwin heeft al duidelijk aangegeven waar de fout maar zonder fout afhandeling kom je daar nooit aan uit.
In OOP is moet je echt wel een control freak zijn

Toevoeging op 17/09/2013 21:12:55:

Ger van Steenderen op 17/09/2013 21:12:33:
Oké dan.
Heel simpel gezegd, je wilt iets met OOP doen en bouwt geen enkele foutafhandeling in.
Erwin heeft al duidelijk aangegeven waar de fout zat maar zonder fout afhandeling kom je daar nooit aan uit.
In OOP is moet je echt wel een control freak zijn
 
Jerry php

Jerry php

17/09/2013 21:16:29
Quote Anchor link
Ik weet niet precies wat je bedoelt. Ik krijg namelijk nu een foutmelding over de mysql_num_rows die ik gebruik in mijn functie, maar dat begrijp ik niet zo goed wat er mis is.
 
Erwin H

Erwin H

17/09/2013 21:31:48
Quote Anchor link
Hmm, blijkbaar heb ik iets voor Jan L*l gezegd. Nog maar een keer dan:
Erwin H op 17/09/2013 20:26:55:
Echo altijd even je query, zodat je precies ziet wat de query string is. Als je dan de fout nog niet ziet kan je altijd even proberen de query direct uit te voeren, in phpmyadmin, of in de command line tool van mysql.
Tevens wil je natuurlijk altijd in je query object zelf gaan kijken of een query lukt of niet en zo nee, een foutafhandeling toepassen. Lukraak het resultaat teruggooien is niet echt netjes.

Query al eens naar het scherm geprint? Zo ja dan zie je direct wat er fout is.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

17/09/2013 21:32:03
Quote Anchor link
Ik zal ven wat comments aan jou code toevoegen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
include 'config/config.database.php';

class query{
    
    public $query;
    
    public static function select($select, $from, $where){
        
        $query = mysql_query("SELECT ".$select." FROM ".$from." WHERE ".$where);
        /**************************************
    Hier MOET je controleren of de qury geslaagd is
    *******************/

    if($query !== false) {
            if(mysql_num_rows($query) > 0){
                return true;
            }
    else{
                return false
            }
    else return false;
    }
}
 
Jerry php

Jerry php

17/09/2013 21:34:25
Quote Anchor link
Ik weet niet precies wat ik nu moet doen om mijn functie werkend te krijgen eerlijk gezegd.. Iemand ideeën?

Toevoeging op 17/09/2013 21:48:15:

Ik krijg namelijk met bovenstaande code van Ger van Steenderen een False terug. Hij geeft de false bij de else van ($query !== false) Dus de query is false, maar ik snap niet precies waarom.. En ik kan de query niet echoen
Gewijzigd op 17/09/2013 21:46:09 door Jerry php
 
Erwin H

Erwin H

17/09/2013 21:52:18
Quote Anchor link
PRINT DE F*CKING QUERY NAAR HET SCHERM!!!!

Er zit namelijk een levensgrote fout in en die zie je blijkbaar zo niet, maar wel als je hem print.
Als je na drie keer het nog niet doet, stop ik ermee, dan weet je dat alvast.

zullen we de capslock maar thuis laten en de vriendelijkheid weer uit de kast halen?[/modedit]
Gewijzigd op 18/09/2013 17:18:25 door Bas IJzelendoorn
 
Jerry php

Jerry php

17/09/2013 21:54:42
Quote Anchor link
Maar ik weet niet hoe ik de query naar het scherm moet printen! Ik zeg al een paar keer dat ik denk dat ik niet kan echo'en in een functie, of terwijl, hoe krijg ik die query op het scherm!
 
Bart V B

Bart V B

17/09/2013 22:06:46
Quote Anchor link
Jerry let op:
echo $query;
Niet meer vergeten he.
 
Jerry php

Jerry php

17/09/2013 22:08:06
Quote Anchor link
Bart, waar moet ik dit neerzetten? Als ik dit in mijn functie zet krijg ik null terug..
 
Bart V B

Bart V B

17/09/2013 22:12:13
Quote Anchor link
Niet de constructie die ik zou kiezen maar wat dacht je van de laatste else waar je false returnt.
Kan nu even geen voorbeeld tikken want zit mobiel.
 

Pagina: 1 2 volgende »



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.