• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

MySQL Abfrage innerhalb einer Klassenfunktion

Hallo alle miteinander! Habe hier einen soweit auch funktionierenden Code:

Code:
<?php

function MyDatabase() {
    $mysqli=new mysqli("localhost","xxxx","passwort","xxxx");
    return $mysqli;
}

$mysqli=MyDatabase();       

if (mysqli_connect_errno()) {
    printf("Es konnte keine Verbindung zur Datenbank aufgebaut werden<p>", mysqli_connect_error());
    exit();
}

$abfrage="SELECT * FROM `Kunden` WHERE `ID`='27'";

if ($result=$mysqli->query($abfrage)) {
    while ($row=$result->fetch_object()) {
        $name=$row->name;
    }
}

// Klassentest
class Kunde {
    public $nachname;
   
    public function setNachname($name) {
        $this->nachname = $name;
    }
   
}

$hans = new Kunde;
$hans->setNachname($name);

echo "Hans Nachname ist ".$hans->nachname;

?>

Ich übermittele also an die Klasse den bereits zuvor mit einer MySQL-Abfrage ermittelten Nachnamen. Ich würde gerne aber an die Klasse lediglich die Kunden. übermitteln (die "27" aus der Abfrage weiter oben) - der Nachname soll dann per Abfrage innerhalb der Funktion setNachname() ermittelt werden - bisher waren meine Versuche diesbezüglich erfolglos. Ich möchte hier auf die ohnehin nicht funktionierenden Versuche am liebsten gar nicht näher eingehen. :-)

Könnte jnd. bitte den hier gegebenen Code so modifizieren, dass die Abfrage innerhalb von setNachname() läuft?... Vielen Dank im Voraus!

Gruß

Arek
 
Wäre ein Fall für die Jobbörse aber ich will ja nicht so sein und gebe dir ein paar Tipps. Mit deiner Setter-Methode würdest Sinngemäß den Nachnamen setzen, d.h. ein SELECT-Statement würde hier dementsprechend keinen Sinn ergeben. Eine Getter-Methode wäre hier das richtige, allerdings auch nicht so richtig.

Du könntest dir Beispielsweise eine Datenbank-Klasse bauen ala:
PHP:
<?php
namespace Database;

class Database
{
    protected $adapter;

    public function __construct(AdapterInterface $adapter)
    {
        $this->adapter = $adapter;
    }
}

interface AdapterInterface {}

class MysqlAdapter implements AdapterInterface {}

und dann dein SELECT-Statement in deiner Getter-Funktion abfeuern, in dem du eine ID mit übergibst.

PHP:
public function getNachname($id) {
            // SELECT * FROM Kunden WHERE ID=$id
           return $nachname;
}
 
Übergebe der Funktion setNachname die Variable $mysqli und packe alles andere in die Funktion. Wo ist dein Problem?
 
Dann würde ich das DB Object aber der Klasse übergeben im Constructer und nicht der einzelnen Methoden der setter oder getter.
 
Zurück
Oben