Toon posts:

[mysql] enums muteren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey ppl,

Ik heb hier iets vreemds.
Ik wil enum waarden uit een veld ophalen muteren en verwijderen. Eigenlijk kan ik alle 3 wel doen maar wanneer er een ' (quote) in een optie van de enums komt dan gaat er iets niet goed.

Het gaat nog goed tot de insert:
enum('Fysiotherapeut', 'Arts', 'Sjonnie\'s Boeken')

Bovenstaande ziet er prima uit. Nu doe ik het opvragen van de column met SHOW COLUMNS en dan krijg ik het volgende:

enum('Fysiotherapeut','Arts','Sjonnie''s Boeken')

Merk hier de dubbele quotes op. Dit is allemaal ALLEEN getest in Mysql (phpmyadmin) en heeft dus niets met PHP te maken.
Ik kan natuurlijk alle 2 quotes vervangen met 1 quote maar dat lijkt me niet de juiste oplossing.

Iemand hier ervaring mee?

Verwijderd

Quotes kunnen op twee manieren worden geëscapet. Door er een backslash voor te zetten, en door ze te verdubbelen. Eenmaal ingevoerd worden de escape characters natuurlijk verwijderd. Bij het weer opvragen van die enum wordt alles kennelijk weer geëscapet. Maar omdat de oorspronkelijke manier niet bekend is, wordt er kennelijk gekozen voor het verdubbelen van de quotes.

Verwijderd

Topicstarter
Oh dat wist ik niet.
Maar de functie stripslashes werkt natuurlijk niet als je php gebruikt. Is hier nog een alternatief voor of is het toch echt gewoon de '' vervangen met '?

Verwijderd

Topicstarter
Subtiele schop :)

Verwijderd

Merk hier de dubbele quotes op. Dit is allemaal ALLEEN getest in Mysql (phpmyadmin) en heeft dus niets met PHP te maken.
Eh? Check je magic quotes options eens ;)

Verwijderd

Topicstarter
Ook als ik set_magic_quotes_runtime(0) gebruik doet hij het nog steeds.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 10-05 05:42
Klopt ook; MySQL doet dat namelijk en jij krijgt gewoon de string terug. Volgens mij moet je ook gewoon zelf de dubbele quotes vervangen (maar dat had je ook al bedacht).

Verwijderd

Topicstarter
Maar dit ligt waarschijnlijk aan het ENUM veld want met een normaal varchar veld gaat alles gewoon zoals het hoort.
Zou zit een bug zijn?

Ik ga zelf maar een replace functietje maken voorlopig. Iemand enig idee of dit idd een bug kan zijn?

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 10-05 22:41

LauPro

Prof Mierenneuke®

Het lijkt me dat je in de config van MySQL aan kan geven hoe bepaalde velden moeten worden geëscaped.

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Verwijderd

Topicstarter
Ik heb zelf geen controle over de configuratie maar als je weet hoe dat 'user-side' gedaan kan worden dan wil ik het graag weten.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 10-05 05:42
Die hele enums zijn geen standaard onderdeel van SQL dus MySQL kan er niet veel meer mee doen dan ze als string retourneren (zoals eigenlijk altijd met proprietary of custom datatypes gedaan wordt) en PHP gaat die verder niet voor je ontleden; dat moet je zelf doen.

Het is dus geen bug. Het hoort zo te werken.

Verwijderd

Topicstarter
Oke, waardevolle info voor mij. Bedankt.

Verwijderd

In plaats van enums kan je ook de waarden opnemen in een andere tabel en werken met een verwijzing. Dan heb je bv geen alter table-rechten nodig en het aanpassen van beschikbare opties is een stuk eenvoudiger: het zijn nu gewoon records.
Pagina: 1