[PHP] Regex pakt te veel data

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BlackWhizz
  • Registratie: September 2004
  • Laatst online: 08-12-2024
Ik ben bezig met een sql class.

Nu selecteer ik dingen volgens de volgende actie:

code:
1
$db->select('nietbestaandetabel','','lol = quote(sdafasdfasdfsd"sdgdsgsd) AND lol1 = quote(sdfasdgasdgsdag"sdf sdalgj)');


Die quote functie is ervoor bedoeld om dingen te escapen. Echter, mijn regex:

code:
1
$where = preg_replace('#quote\((.*)\)#ise',"db::escape(' $1 ')",$where);


Leest de waarde zo:
sdafasdfasdfsd"sdgdsgsd) AND lol1 = quote(sdfasdgasdgsdag"sdf sdalgj

Hoe kan ik de regex aanpassn zodat die het wel goed leest.

Acties:
  • 0 Henk 'm!

Verwijderd

Vraagteken na je .* zetten.

Of [^)]* ervan maken kan ook.

Maar hoe doe je het nu als je een ) in je database wilt zetten?

[ Voor 64% gewijzigd door Verwijderd op 18-01-2008 16:56 ]


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Ehm, aangezien de strings die gequote moeten worden waarschijnlijk ook ")" kunnen bevatten, gaat dit nooit goed/veilig werken?

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • BlackWhizz
  • Registratie: September 2004
  • Laatst online: 08-12-2024
Daar had ik nog niet aan gedacht... Dan gaat dat plan dus van de baan.

Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou persoonlijk ook niet het wiel opnieuw uitvinden, kijk bijvoorbeeld eens naar MySQLi

Acties:
  • 0 Henk 'm!

  • BlaTieBla
  • Registratie: November 2000
  • Laatst online: 10:09

BlaTieBla

Vloeken En Raak Schieten

waarom doe je die regex niet buiten je SQL statement?
Dus eerst dat regex resultaat in een variabele stoppen en die in de SQL statement prakken.

leica - zeiss - fuji - apple | PSN = Sh4m1n0


Acties:
  • 0 Henk 'm!

Verwijderd

BlaTieBla schreef op zaterdag 19 januari 2008 @ 15:23:
waarom doe je die regex niet buiten je SQL statement?
Dus eerst dat regex resultaat in een variabele stoppen en die in de SQL statement prakken.
Wat los je daar precies mee op?

Je blijft sowieso altijd het probleem houden dat je geen ) erin kan stoppen, of je zou die moeten escapen waardoor je regexen weer niet zo fijn worden.

Acties:
  • 0 Henk 'm!

  • kokx
  • Registratie: Augustus 2006
  • Laatst online: 13-09 20:30

kokx

WIN

Bij het Zend Framework hebben ze een quoteInto functie gemaakt.

Deze werkt op deze manier:
PHP:
1
2
3
4
<?php
$where = $db->quoteInto('veld=?', 'waarde');
// $where is nu "veld='waarde'"
?>


Deze wordt hier dan correct in-gequote. Ook arrays worden goed omgezet van array('a', 'b', 'c') naar ('a', 'b', 'c') (wat voor een IN statement handig is).

Ik denk dat je zoiets zelf ook moet doen (gebruik hierbij bijvoorbeeld PDO's quote functie, $pdo->quote()).

[ Voor 19% gewijzigd door kokx op 19-01-2008 17:12 ]


Acties:
  • 0 Henk 'm!

  • BlaTieBla
  • Registratie: November 2000
  • Laatst online: 10:09

BlaTieBla

Vloeken En Raak Schieten

Verwijderd schreef op zaterdag 19 januari 2008 @ 16:35:
[...]

Wat los je daar precies mee op?

Je blijft sowieso altijd het probleem houden dat je geen ) erin kan stoppen, of je zou die moeten escapen waardoor je regexen weer niet zo fijn worden.
Had ff niet door dat het resultaat die haakjes bevatte :+

[ Voor 20% gewijzigd door BlaTieBla op 20-01-2008 21:37 ]

leica - zeiss - fuji - apple | PSN = Sh4m1n0

Pagina: 1