Probleem met mysql_query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wille Westerhof

Wille Westerhof

23/03/2012 00:25:02
Quote Anchor link
Hoi,

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

PHP hulp

09/05/2024 04:45:06
 
Bart V B

Bart V B

23/03/2012 00:29:31
Quote Anchor link
Ok, en nu de relevante code...
Die extra slashes komen waarschijnlijk doordat je 'iets' toevoegt.
addslashes() bijvoorbeeld? magic_quotes aanstaan?

Geef daarom altijd de relevante code, zo is het gissen..
 
- SanThe -

- SanThe -

23/03/2012 07:36:02
Quote Anchor link
Hier doet ie dat niet. Getest.
Probeer eens stripslashes($_GET['m']).
 
Erwin H

Erwin H

23/03/2012 08:15:34
Quote Anchor link
Om te beginnen zou ik die query string aanpassen. Waarom je hele where statement erin plakken, als alleen de waardes genoeg is?
 
Wille Westerhof

Wille Westerhof

23/03/2012 08:51:43
Quote Anchor link
$select = mysql_query("SELECT * FROM munten WHERE {$_GET['m']}");
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)
PHP script in nieuw venster Selecteer het PHP script
1
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>';


    }

?>
Gewijzigd op 23/03/2012 09:19:16 door Wille Westerhof
 
Erwin H

Erwin H

23/03/2012 09:23:33
Quote Anchor link
Ik zou nog een stap verder gaan. Ik zou je query string anders opbouwen, zoiets bijvoorbeeld:

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)
PHP script in nieuw venster Selecteer het PHP script
1
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."')");
?>
 
Wille Westerhof

Wille Westerhof

23/03/2012 09:27:33
Quote Anchor link
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..
 
- SanThe -

- SanThe -

23/03/2012 09:31:59
Quote Anchor link
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..


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 -
 
Wille Westerhof

Wille Westerhof

23/03/2012 09:33:53
Quote Anchor link
dit script is enkel voor lokaal gebruik.

ik wil namelijk gewoon de hele select in de url plaatsen; en dat hij goed op de pagina als output komt!
 
Erwin H

Erwin H

23/03/2012 09:35:23
Quote Anchor link
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..

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....
 
- SanThe -

- SanThe -

23/03/2012 09:38:10
Quote Anchor link
Okee.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
url: zoek.php?m=WHERE waarde IN ('2.00','2.50')
query: $select = mysql_query("SELECT * FROM munten " . stripslashes($_GET['m']));
Gewijzigd op 23/03/2012 10:40:05 door - SanThe -
 
Wille Westerhof

Wille Westerhof

23/03/2012 10:20:48
Quote Anchor link
@ SanThe, bedankt!
Na het toevoegen van een extra ) in de query werkt het!! precies wat ik bedoelde!.
 



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.