Probleem met mysql_query
Ik ben de hele dag al met het volgende bezig:
Ik heb een scriptje dat gegevens die je in checkboxen invult als een echo weergeeft (wat je hebt ingevuld)
Dit wil ik gebruiken om op de volgende pagina dmv. {$_GET['m']} op te roepen om zo de database uit te lezen
het probleem: de mysql query voegt automatisch slashes (\) toe, waardoor de query niet meer werkt.
de url komt er als volgt uit te zien: (dat is prima)
zoek.php?m=WHERE waarde IN ('2.00','2.50')
let op: deze ' ' MOETEN er in staan; anders werkt de WHERE IN niet!!
nu geeft de {$_GET['m']} dus in de query weer: (\'2.00\',\'2.50\')
en dat geeft de fout; hoe haal ik die slashes er uit??
Groet
Wille
Die extra slashes komen waarschijnlijk doordat je 'iets' toevoegt.
addslashes() bijvoorbeeld? magic_quotes aanstaan?
Geef daarom altijd de relevante code, zo is het gissen..
Probeer eens stripslashes($_GET['m']).
Om te beginnen zou ik die query string aanpassen. Waarom je hele where statement erin plakken, als alleen de waardes genoeg is?
stripslashes($_GET['m']);
heb ik nu (dus de rest uit de m= functie)
als ik dit doe, doet hij het wel:
$select = mysql_query("SELECT * FROM munten WHERE waarde IN ('2.00','2.50')");
terwijl die 'waarde IN ('2.00','2.50')' exact uit de m= in de url gehaald wordt.
Nu heb ik begrepen op internet dat hij uitzichzelf quotes toevoegt; en magic quotes staat aan, maar dat kan ik niet uitzetten.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$select = mysql_query("SELECT * FROM munten WHERE {$_GET['m']}");
stripslashes($_GET['m']);
while($list = mysql_fetch_object($select)) {
print ''.nl2br($list->waarde).'<br>';
}
?>
$select = mysql_query("SELECT * FROM munten WHERE {$_GET['m']}");
stripslashes($_GET['m']);
while($list = mysql_fetch_object($select)) {
print ''.nl2br($list->waarde).'<br>';
}
?>
Gewijzigd op 23/03/2012 09:19:16 door Wille Westerhof
pagina.php?m=2.00+2.50
Dan kan je in je php script de waarde exploden met de +, dan alle waardes testen (dat doe je nu namelijk niet!) en dan imploden met quotes en komma:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
//explode naar een array
$m = explode( '+', $_GET['m'] );
foreach( $m as $value ){
//test of de waardes wel correct zijn, juiste type, geen hackers input, binnen grenzen etc
}
//implode naar juiste SQL format, srting wordt hiermee: "2.00','2.50"
$m = implode( "','", $m );
//invoegen in SQL, hier plaats je ook de begin en eind quotes om de waardes heen
$select = mysql_query("SELECT * FROM munten WHERE waarde IN ('".$m."')");
?>
//explode naar een array
$m = explode( '+', $_GET['m'] );
foreach( $m as $value ){
//test of de waardes wel correct zijn, juiste type, geen hackers input, binnen grenzen etc
}
//implode naar juiste SQL format, srting wordt hiermee: "2.00','2.50"
$m = implode( "','", $m );
//invoegen in SQL, hier plaats je ook de begin en eind quotes om de waardes heen
$select = mysql_query("SELECT * FROM munten WHERE waarde IN ('".$m."')");
?>
bijv. m=WHERE waarde IN(2.00, 2.50) AND munt IN(gulden, euro) etc..
Wille Westerhof op 23/03/2012 09:27:33:
ja maar het punt is dat er dadelijk meer functies in de url komen
bijv. m=WHERE waarde IN(2.00, 2.50) AND munt IN(gulden, euro) etc..
bijv. m=WHERE waarde IN(2.00, 2.50) AND munt IN(gulden, euro) etc..
Ga je zo ook inloggen? Dan is dit zo aan te passen dat je altijd binnen bent. Oftewel hartstikke lek.
Luister naar Erwin en pas je script aan.
Gewijzigd op 23/03/2012 09:32:25 door - SanThe -
ik wil namelijk gewoon de hele select in de url plaatsen; en dat hij goed op de pagina als output komt!
Wille Westerhof op 23/03/2012 09:27:33:
ja maar het punt is dat er dadelijk meer functies in de url komen
bijv. m=WHERE waarde IN(2.00, 2.50) AND munt IN(gulden, euro) etc..
bijv. m=WHERE waarde IN(2.00, 2.50) AND munt IN(gulden, euro) etc..
Dat maakt niets uit. Je kan het stukje script dat ik je net heb gegeven eenvoudig uitbreiden naar extra parameters. Doe hetzelfde voor bijvoorbeeld GET['munt'].
En als je er niet uit komt kunnen we je hier wel verder helpen natuurlijk....
Code (php)
1
2
2
url: zoek.php?m=WHERE waarde IN ('2.00','2.50')
query: $select = mysql_query("SELECT * FROM munten " . stripslashes($_GET['m']));
query: $select = mysql_query("SELECT * FROM munten " . stripslashes($_GET['m']));
Gewijzigd op 23/03/2012 10:40:05 door - SanThe -
Na het toevoegen van een extra ) in de query werkt het!! precies wat ik bedoelde!.