Variable in een variable
Voor een website moet ik moet een verhaaltje in de database zetten.
Echter zitten er in dit verhaal een aantal variables.
Code (php)
1
2
2
$bericht = '
Verhaaltje, pietje loopt in het bos en toen kwam '.$data['naam'].' ook. ';
Verhaaltje, pietje loopt in het bos en toen kwam '.$data['naam'].' ook. ';
Als ik dit dan imporeer in de database verstuurd hij de query niet , als ik vervolgens de variables er weer uithaal dan werkt het wel weer.
Ik hoop dat iemand kan helpen,
Gewijzigd op 03/11/2014 20:39:38 door Patrick van veld
Heb je wat meer code over hoe je het opslaat in de database?
- Aar - op 03/11/2014 20:45:48:
Heb je wat meer code over hoe je het opslaat in de database?
$mysqli->query("INSERT INTO verhalen (verhaal) VALUES ('".$bericht."')")or die($mysqli->error.__LINE__);
En krijg je een foutmelding verder?
- Aar - op 03/11/2014 21:14:12:
En krijg je een foutmelding verder?
Nope
Wat staat er uiteindelijk in de database?
Je query lijkt mij prima. Ik weet niet of je in je huidige code er rekening mee houdt, maar zorg ook even dat je $bericht een mysqli_real_escape_string() bevat om SQL injections tegen te gaan.
Ik heb dit opgelost middels een str_replace
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// Lees eerst de te vervangen variabelen in d.m.v. een query
// Bijv
$sql = "select tekst from tabel";
$cResult = mysqli_query($verbinding,$sql);
$rowResult = mysqli_fetch_array($cResult);
$cVar1 = $rowResult['tekst'];
// Zorg dat in je tekst de verwijzingen staan. In dit voorbeeld is dit de variabele '[#naam2]'
// De tekst is dan: Verhaaltje, pietje loopt in het bos en toen kwam [&naam2] ook. ';
$cVerhaal = str_replace("[&naam2]",$cVar1,$cVerhaal);
?>
// Lees eerst de te vervangen variabelen in d.m.v. een query
// Bijv
$sql = "select tekst from tabel";
$cResult = mysqli_query($verbinding,$sql);
$rowResult = mysqli_fetch_array($cResult);
$cVar1 = $rowResult['tekst'];
// Zorg dat in je tekst de verwijzingen staan. In dit voorbeeld is dit de variabele '[#naam2]'
// De tekst is dan: Verhaaltje, pietje loopt in het bos en toen kwam [&naam2] ook. ';
$cVerhaal = str_replace("[&naam2]",$cVar1,$cVerhaal);
?>
Dit kun je zo met, in principe, een oneindig aantal var's doen
George
Zelfde effect, maar dat is 'logischer' voor PHP.
Gewijzigd op 04/11/2014 12:34:51 door Eddy E
Daarmee loop je wel het risico dat PHP probeert om $naam2 te interpoleren (wat een E_NOTICE geeft als $naam2 niet bestaat, en wat sowieso niet leidt tot het gewenste eindresultaat).
Waar ik zelf de voorkeur aan geef is om de placeholder ook af te sluiten, dus bijvoorbeeld: %naam2%. Anders wordt het lastiger om onderscheid te maken tussen naam2 en naam20 (want is naam20 een variabele, of is het naam2 gevolgd door een 0?)
Gewijzigd op 04/11/2014 13:05:20 door Willem vp
En als je het direct echoëd vanuit je database (zonder andere bewerkingen vooraf) ook niet.
Maar [naam2] kan natuurlijk ook.