Is het mogelijk om een PHP variabele defniëren in een MySQL veld waarde?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Nkamp Kamp van de

nkamp Kamp van de

05/10/2017 10:03:49
Quote Anchor link
Hallo,

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$VarName
= '2017';

echo "Het jaartal is: $VarName, dkjakjfkla";
?>


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,
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $VarName; ?>
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'
 
PHP hulp

PHP hulp

29/04/2024 13:35:38
 
Willem vp

Willem vp

05/10/2017 10:13:39
Quote Anchor link
<dit heb ik niet gezegd>
http://php.net/eval
</dit heb ik niet gezegd>
 
- SanThe -

- SanThe -

05/10/2017 10:43:50
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql
= "INSERT INTO tableX VALUES('het jaartal is: ".$VarName."')";
?>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/10/2017 11:20:32
Quote Anchor link
In de database zetten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Het jaartal is: [CURRENT_YEAR]

en de tekst scannen op [CURRENT_YEAR] en vervangen voor jaartal.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo str_replace('[CURRENT_YEAR]', date('Y'), $theTextOutOfTheDatabase);
?>
Gewijzigd op 05/10/2017 11:23:49 door Frank Nietbelangrijk
 
Nkamp Kamp van de

nkamp Kamp van de

05/10/2017 11:25:15
Quote Anchor link
Bedankt Willem,


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
 
- Ariën  -
Beheerder

- Ariën -

05/10/2017 11:31:24
Quote Anchor link
Het gaat dus om 'placeholders' die je in de database zet, als een template-tekst bijvoorbeeld?
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.
 
Nkamp Kamp van de

nkamp Kamp van de

05/10/2017 12:20:33
Quote Anchor link
Hoi Ariën,

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.,
 
- Ariën  -
Beheerder

- Ariën -

05/10/2017 13:27:54
Quote Anchor link
Eval moet je ook niet gebruiken, en dat is nergens voor nodig in jouw situatie.
 
Thomas van den Heuvel

Thomas van den Heuvel

05/10/2017 15:24:52
Quote Anchor link
Waarom sla je niet enkel de waarde op?

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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.