Beste forummers,

Momenteel ben ik bezig mezelf aan te leren om met classes te werken en deze ook zelf te schrijven.
Om mezelf een beetje wegwijs te maken ben ik nu bezig met een insert functie schrijven. Ik loop nu alleen even tegen een probleempje aan.
Onderstaand een deel van de code, waar het nu nog niet lekker loopt.

<?php
public function InsertIntoDatabase($info) {
global $dbh;

return $this->variables;

// run insert query
$query = 'INSERT INTO registered_user (' .
$this->database_fields
. ') VALUES (' .
$this->database_placeholders
. ')';
$stmt = $dbh->prepare($query);

return $this->bindparam;

$stmt->execute();

}

?>

Het gaat 'm om de volgende 2 regels:
<?php
return $this->variables;
return $this->bindparam;
?>
Hier gaat het mis. Als ik er echo voor zet, dan worden wel de goede waarden weer gegeven.

echo $this->variables; geeft netjes:
<?php
$variabele = 'waarde';
?>
en echo $this->bindparam; geeft netjes:
<?php
$stmt->bindParam(':waarde',$waarde);
?>

Als ik de query uit wil voeren, krijg ik geen foutmelding, maar er wordt niks toegevoegd aan de database.
Als ik vervolgens $this->variables; en $this->bindparam; weg haal, en er $variabele = 'waarde'; en $stmt->bindParam(':waarde',$waarde); voor in de plaats zet, dan gaat het wel goed.
Wat doe ik fout?
Klik voor de grap eens op het woordje 'return' in jouw code voorbeeld en lees de pagina op php.com daarover. En dan voornamelijk het zinnetje:

the return statement immediately ends execution of the current function
Crap, stom, dat had ik moeten weten. Precies dat is me in een ander topic duidelijk uitgelegd, en toch gebruik ik het nu weer. Domdomdom :-(
Als ik het return er voor vandaan haal krijg ik overgens de melding dat de parameters not bound zijn (daarom had ik er return voor gezet). Kortom, ik heb dus nog iets anders niet helemaal juist gedaan.

Edit: ik weet overgens wel wat die melding inhoud. Nu alleen de oplossing nog.

Reageren