Variable in een variable

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Patrick van veld

Patrick van veld

03/11/2014 20:36:36
Quote Anchor link
Hoi,

Voor een website moet ik moet een verhaaltje in de database zetten.
Echter zitten er in dit verhaal een aantal variables.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
    $bericht = '            
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
 
PHP hulp

PHP hulp

05/04/2020 04:37:15
 
- Ariën -
Beheerder

- Ariën -

03/11/2014 20:45:48
Quote Anchor link
Heb je wat meer code over hoe je het opslaat in de database?
 
Patrick van veld

Patrick van veld

03/11/2014 21:03:39
Quote Anchor link
- 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__);
 
- Ariën -
Beheerder

- Ariën -

03/11/2014 21:14:12
Quote Anchor link
En krijg je een foutmelding verder?
 
Patrick van veld

Patrick van veld

03/11/2014 21:22:53
Quote Anchor link
- Aar - op 03/11/2014 21:14:12:
En krijg je een foutmelding verder?


Nope
 
- Ariën -
Beheerder

- Ariën -

03/11/2014 21:28:59
Quote Anchor link
Echo eens $bericht, wat zie je?
Wat staat er uiteindelijk in de database?
 
Arjan Schuurman

Arjan Schuurman

03/11/2014 22:21:46
Quote Anchor link
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.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

04/11/2014 01:35:00
Quote Anchor link
Error reporting aan zetten boven in je script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
?>
 
George van Baasbank

George van Baasbank

04/11/2014 10:59:33
Quote Anchor link
Patrick,

Ik heb dit opgelost middels een str_replace

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);

?>


Dit kun je zo met, in principe, een oneindig aantal var's doen

George
 
Eddy E

Eddy E

04/11/2014 11:48:01
Quote Anchor link
Welicht is het dan 'beter' ipv [&naam2] gewoon $naam2 te doen.
Zelfde effect, maar dat is 'logischer' voor PHP.
Gewijzigd op 04/11/2014 12:34:51 door Eddy E
 
Willem vp

Willem vp

04/11/2014 13:03:16
Quote Anchor link
> Welicht is het dan 'beter' ipv [&naam2] gewoon $naam2 te doen.

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
 
Eddy E

Eddy E

04/11/2014 13:30:28
Quote Anchor link
Als $naam tussen enkele haakjes staat niet.
En als je het direct echoëd vanuit je database (zonder andere bewerkingen vooraf) ook niet.

Maar [naam2] kan natuurlijk ook.
 



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.