static function
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)
1
2
3
4
5
6
7
8
9
10
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;
}
}
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:
Het resultaat van de var_dump is: boolean false
Uiteraard heb ik de class geincluded, dus dat zit allemaal wel goed.
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.
Met een WHERE 1=1 weten we wel hoe laat het is, maar kun je toch concreter worden?
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
Ik zie dat WHERE 1=1 weleens vaker voorbij komen, het praktische nut daarvan ontgaat mij volledig.
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
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”.
Is hetzelfde als:
Ga je in PHP ook dit doen?
Denk ut niet!
Gewijzigd op 17/09/2013 20:51:13 door Ger van Steenderen
Volgende stap is een query bedenken die ook nut heeft.
@Ward, dan ga je helemaal nat! ;-)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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;
}
}
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)
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
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
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
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 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.
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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;
}
}
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;
}
}
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
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
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!
echo $query;
Niet meer vergeten he.
Bart, waar moet ik dit neerzetten? Als ik dit in mijn functie zet krijg ik null terug..
Kan nu even geen voorbeeld tikken want zit mobiel.