Is het mogelijk om een PHP variabele defniëren in een MySQL veld waarde?
Resultaat is dan dat er netjes op het scherm komt Het jaartal is: 2017.
Maar nu haal ik de tekst uit een MySQL dB. Is dit mogelijk en hoe doe je dit dan?
Ik heb bv. geprobeerd met {}, met gewoon de variabele naam, etc":
INSERT INTO tableX VALUES('het jaartal is: $VarName')
Wanneer ik dit in php ophaal met een query komt er Het jaartal is: $VarName, dkjakjfkla, op het scherm te staan, wat ik ook wel weer begrijp want het is voor PHP gewoon een string.
Anderzijds denk ik dit zou toch moeten kunnen.
Workaround is natuurlijk via substr te werken en het er alsnog in te 'plakken'
en de tekst scannen op [CURRENT_YEAR] en vervangen voor jaartal.
Gewijzigd op 05/10/2017 11:23:49 door Frank Nietbelangrijk
Nu vul ik de tabel vanuit MySQL Workbench en ik heb verschillende optie's geprobeerd zoals:
Values(...,..., 'Year N: ".$Year_N."<br/>C0010') => resultaat op scherm: Year N: ".$Year_N." etc.
escaping:
Values(...,...., 'Year N: \".$Year_N.\"<br/>C0010') => resultaat idem op scherm: Year N: ".$Year_N." etc.
Dit geeft nog niet het gewenste resultaat, er wordt letterlijk weer gegeven wat in de database staat.
*************EDIT
Ik zie nu dat met str_replace of eval het ook heel handig is om het aan te passen, en dat ga ik nu maar doen.
Toch ben ik nog steeds benieuwd of het nou wel of niet kan met PHP/MySQL?
*********EIND EDIT
Gr.,
Nico
Gewijzigd op 05/10/2017 11:30:05 door nkamp Kamp van de
Dan kan je prima zelf variabelen bedenken hievoor. Ik zou dan wat afwijkends doen wat PHP gebruikt, zoals [YEAR] of iets dergelijks.
In de output kan je dit met str_replace() dan vervangen in de juiste waarde.
Ja, dat is het juiste word 'placeholders', die in php dan letterlijk vervangen zouden moeten worden door de waarde van de gedefinieerde variabele in PHP.
Maar ik begrijp dat dit niet mogelijk is en via eval (wat ik nu al gedaan heb) of str_replace bij gewerkt moet worden.
Punt waar ik een beetje mee zit, en nu geen last van heb, het gaat nu maar om twee waarden.
Stel dat je er tig hebt... Ik bouw nu min of meer een scherm op, vanuit een database tabel met kolom headers en rij beschijving.
Natuurlijk bij iedere waarde even door de str_replace of eval halen. Maar ik had gehoopt dat de 'placeholder' automatisch vervangen zou worden door de waarde van de variabele.
Voor nu ben ik geholpen, en werkt het (al).
Bedankt.
Gr.,
Eval moet je ook niet gebruiken, en dat is nergens voor nodig in jouw situatie.
En als je meerdere variabelen + waarden wilt opslaan, maak hier dan een tabel van, bijvoorbeeld "variabelen" met twee velden "naam" en "waarde"? Als je zorgt dat de naam uniek blijft kun je hier bij het uitlezen een array of object mee bouwen waarmee je rechtstreeks de waarden kunt aanspreken ($dbVars['jaartal'] of $data->jaartal ofzo). En als dit een soort van configuratie betreft: noem je tabel dan ook iets in die richting.
PHP-code opslaan in een database lijkt mij niet verstandig. Meestal bestaan er ook andere, en betere, manieren om hetzelde te doen.
Ik denk dat er vooral even een soort van knopje om moet bij het redeneren over hoe je data structureert in de database. Verzin een slimme(re) oplossing dan wat je nu hebt.
EDIT: hoe je deze data verder verwerkt in een sjabloon/template is vers twee en staat los van wat je doet in je database - het zijn twee aparte problemen die in afzondering behandeld kunnen worden.
Gewijzigd op 05/10/2017 15:26:29 door Thomas van den Heuvel