Toon posts:

[MySQL] Slashes escapen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo mensen,

ik heb een stored procedure, die meerdere concat's uitvoert, en ten slotte het resultaat hiervan uitvoert. De concat's genereren dus een query. De waardes die in de query moeten komen worden deels aangelever door php, waarin ik netjes addslashes() doe met de waardes. Maar door de concat query's verdwijnen de slashes voor de quotes, en krijg ik nogsteeds een error. Nu ben ik dus op zoek naar een functie in MySql, die zelf slashes e.d. kan escapen in bijv een concat. De MySql documentatie en de search van GoT leverden steeds de addslashes functie op van PHP, maar dit wil ik dus niet want ik wil het (gedeeltelijk) aan de MySql kant regelen.
edit:

[MySql] vergeten in topictitel

[ Voor 6% gewijzigd door Verwijderd op 18-04-2006 12:33 ]


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Misschien kan je Replace gebruiken?

Blog [Stackoverflow] [LinkedIn]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Waarom een fout proberen te omzeilen in plaats van op te lossen? Als ik het zo hoor klopt er gewoon iets niet aan je stored procedure, want anders bleven die slashes wel staan? :?

En als dit normaal gedrag is: waarom doe je dan niet van tevoren een dubbele addslashes in PHP? :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
@ -NMe-,

ik doe bijv:
code:
1
2
3
set @s = concat("SELECT `foo` FROM `bar` WHERE `foobar` = ", _input);
PREPARE stmt FROM @s;
EXECUTE stmt;


Als ik dus in mijn _input mooi een \ voor een ' heb staan, haalt de concat deze dus weer weg, en mis ik hem op het EXECUTE punt. Aangezien ik een variabel aantal concat's doe, ga ik niet voor elke concat een keer addslashes() toevoegen, ook beetje een pleisteroplossing is dat vind je niet?

@ Wolfboy,

ik kan idd een replace gebruiken, \ replacen door \\, maar dit vind ik niet echt een nette oplossing, is er geen standaard escape functie in mysql?

[ Voor 18% gewijzigd door Verwijderd op 18-04-2006 12:47 ]


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

mysql_real_escape_string is een standaard mysql functie en die moet je ook gebruiken ipv addslashes.


ow, het ging over PHP, nou gelukkig is die functie ook beschikbaar binnen PHP :Y)

[ Voor 28% gewijzigd door Erkens op 18-04-2006 12:58 ]


Verwijderd

Topicstarter
@ Erkens,

ok, weet ik dat voor de volgende keer, maar dat lost mijn huidige probleem niet op :)

Volgens mij heb ik het binnen mysql nu gevonden, de functie quote :)

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op dinsdag 18 april 2006 @ 13:00:
@ Erkens,

ok, weet ik dat voor de volgende keer, maar dat lost mijn huidige probleem niet op :)

Volgens mij heb ik het binnen mysql nu gevonden, de functie quote :)
mja, beter is het om je database op orde te hebben door eenmalig alle data eruit te halen en er correct in te stoppen, want zo blijf je bezig met prutsen :)

Verwijderd

Topicstarter
Ja en dat correct er instoppen ben ik dus nu aan het doen ;) Voor 180.000 records....dmv een stored procedure

Het probleem blijkt nu totaal ergens anders te ziten. De PHP kant haalt de \ er al uit terwijl dit niet mag... lijkt er dan toch op dat ik 2x addslashes() moet gaan doen

[ Voor 45% gewijzigd door Verwijderd op 18-04-2006 13:22 ]


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op dinsdag 18 april 2006 @ 13:14:
Het probleem blijkt nu totaal ergens anders te ziten. De PHP kant haalt de \ er al uit terwijl dit niet mag... lijkt er dan toch op dat ik 2x addslashes() moet gaan doen
magic_quote gezeik?

Verwijderd

Topicstarter
Nope, ik voer 2 query's uit in elkaar, laat ik t zo zeggen, een query, die letterlijk nog een query uitvoerd (dus geen geneste query maar een echte! :p) Dus moet ik in principe ook 2x escapen

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

volgens mij ben je niet handig bezig, escapen hoef je immers maar 1x te doen, en dat is alleen bij het opstellen van je query, zodra je meer dan 1x aan het escapen bent dan ben je doorgaands gewoon ranzig bezig.
Pagina: 1