{PHP] waarde in MYSQL query met LIKE %

Pagina: 1
Acties:
  • 200 views

  • chicky
  • Registratie: Augustus 2001
  • Laatst online: 01-06 15:35
Hoi,

Ik haal een waarde uit een pagina met een combobox, die ik met Post doorgeef aan een volgende pagina.
Als ik in de combobox niets wil invullen, is de default waarde uit de combobox %.

nu wil ik graag in de query een LIKE statemnt gebruiken, zodat als er niets is ingevuld, er naar alles wordt gezocht;

PHP:
1
2
3
4
5
6
7
8
    <form action='test1.php' method='post'>
        <SELECT name='Auto'>
        <option value='%'>Maakt niet uit</option>
        <option value='Audi'>Audi</option>
        <option value='VW'>VW</option>
        </SELECT>
        <input type="submit" name="Submit" value="Zoek"> 
    </form>


Dan haal ik in de volgende pagina de waarde op;

PHP:
1
2
3
4
5
6
7
$Auto_merk = $_POST['Auto'];

$query = "SELECT * FROM Auto WHERE Merk=LIKE $Auto_merk ";

result = mysql_query($query, $connect) 
or die(mysql_error());
?>


Ik blijf nu problemen houden dat de waarde % uit de eerste pagina niet goed in de query terecht komt.
Ik heb al van alles geprobeerd qua syntax, maar blijf tegen het probleem aanlopen. (% tussen haakjes, % tussen quotes, % met \ tussen haakjes, % met \ tussen quotes enz. enz.)

Kan iemand mij vertellen wat de juiste syntax moet zijn.

Thx

  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 16:28

ThunderNet

Flits!

PHP:
1
2
3
4
5
6
7
8
9
10
$Auto_merk = "";
$Auto_merk = $POST['auto'];
$Auto_merk = "'" . $Auto_merk . "'";
$Auto_merk = mysqli_real_escape_string($Auto_merk);

if ($Auto_merk == "''") {
    $Auto_merk = "'%%'";
} 

$query = "SELECT * FROM Auto WHERE Merk LIKE $Auto_merk";


En als je bij VW ook resultaten als aVWa wilt hebben:

PHP:
1
2
3
4
5
6
7
$Auto_merk = "";
$Auto_merk = $POST['auto'];

$Auto_merk = mysqli_real_escape_string($Auto_merk);
$Auto_merk = "'%" . $Auto_merk . "%'";

$query = "SELECT * FROM Auto WHERE Merk LIKE $Auto_merk";


Waarom maak je eigenlijk gebruik van mysql en niet van mysqli?

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Wat nou als ik het volgende html-bestandje aanmaak op mijn pc:
HTML:
1
2
3
4
5
6
<form action='http://jouwsite.nl/test1.php' method='post'>
        <select name='Auto'>
        <option default="default" value=" ''; drop table Auto; ">Attaque</option>
        </select>
        <input type="submit" name="Submit" value="DoIt"> 
    </form>

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • chicky
  • Registratie: Augustus 2001
  • Laatst online: 01-06 15:35
@ThunderNet

Dank je wel _/-\o_

De oplossing met:
PHP:
1
2
3
if ($Auto_merk == "''") {
    $Auto_merk = "'%%'"; 
}


Werkt perfect. (was ik echt niet zelf achter gekomen)


@CodeCaster

Ik zou niet precies weten wat er dan gebeurd (newbie mode), maar ik heb het vermoeden dat dit nu precies een SQL injectie is.
Ik zou niet precies weten hoe ik het maak of wat ik er aan kan doen. Ik hoop dat je me dat alsnog gaat uitleggen.

(ondertussen is het 0:45 en moet ik morgen weer werken, dus ik kijk morgen verder :z :z :z :z )

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
chicky schreef op donderdag 12 februari 2009 @ 00:44:
Ik zou niet precies weten wat er dan gebeurd (newbie mode), maar ik heb het vermoeden dat dit nu precies een SQL injectie is.
:Y
chicky schreef op donderdag 12 februari 2009 @ 00:44:
Ik zou niet precies weten hoe ik het maak of wat ik er aan kan doen. Ik hoop dat je me dat alsnog gaat uitleggen.
Ik mag hopen dat je dat zelf ook prima kunt vinden via Google, wikipedia of onze eigen search. Er is méér dan genoeg over geschreven. We zijn hier geen afhaalbalie voor al je vragen waar je zelf te lui voor bent om uit te zoeken.

Afbeeldingslocatie: http://ebiquity.umbc.edu/blogger/wp-content/uploads/2007/10/exploits_of_a_mom.png
CodeCaster schreef op donderdag 12 februari 2009 @ 00:20:
Wat nou als ik het volgende html-bestandje aanmaak op mijn pc:
HTML:
1
2
3
4
5
6
<form action='http://jouwsite.nl/test1.php' method='post'>
        <select name='Auto'>
        <option default="default" value=" ''; drop table Auto; ">Attaque</option>
        </select>
        <input type="submit" name="Submit" value="DoIt"> 
    </form>
Moeilijk doen als 't makkelijk kan :P In FF kun je dat soort zaken gewoon met de Web Developer Toolbar en/of Firebug aanpassen op de pagina die je op dat moment bekijkt ;)

[ Voor 33% gewijzigd door RobIII op 12-02-2009 00:51 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Dit topic is gesloten.