MySQLi/OOP Problem

MsWord

Mitglied
Hallo,

ich habe eine config.php in welcher ich die Verbindung zur DB herstelle.
PHP:
<?php

$mysql_data = array();
$mysql_data['host']        = '';
$mysql_data['user']        = '';
$mysql_data['passwd']    = '';
$mysql_data['database']    = '';
$mysql_data['prefix']    = '';

define('Prefix', $mysql_data['prefix']);

/* MySQL Verbindung */

$db = @new mysqli($mysql_data['host'], $mysql_data['user'], $mysql_data['passwd'], $mysql_data['database']);
if (mysqli_connect_errno()) {
    die ('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
}

/* MySQL Verbindungsscript end */

// Lösche das Array mit den MySQL Daten
unset($mysql_data);

?>

Wie muss ich das umschreiben das ich $db->query([...]) in Klassen verwenden kann?
Wenn ich so versuche in einer Klasse zu verwenden kommt ein Fehler.
(Bin noch gerade dabei OOP zu lernen)

MfG
MsWord
 
Hallo,

ups, habe ich ganz vergessen zu entfernen ;)
PHP:
<?
class mainsettings {
    /**
     * Wert der aus der Spalte "name" ausgelesen werden soll
     *
     * @access    private
     * @var       string
     */
    private $name = NULL;
  
    /**
     * Im Fehlerfall wird hier der Fehler gespeichert
     *
     * @access    private
     * @var       string
     */
    private $error = NULL;
  
    /**
     * Wert festlegen
     *
     * @access    public
     */
    public function __construct($search = ""){
        if(!empty($search)){
            $this->name = $search;
        } else {
            $this->error = 'Der Übergabe-Parameter ist leer!';
        }
    }
  
    public function result($search = ''){
        if(!empty($search)){
            $this->name = $search;
            $this->error = NULL;
        }
        $sql     = "Select * From ".Prefix."_main Where name = '".$this->name."' Limit 1";
        $result = $db->query($sql);
      
        // Prüfen ob ein Fehler aufgetreten ist
        if (!$result) {
            $this->error = 'Etwas stimmte mit dem Query nicht: '.$db->error;
        }
      
        // Ausgabe/Rueckgabe des gewuenschten Wertes
        $row = $result->fetch_assoc();
        return $row['value'];
    }

}

Wenn ich das so versuche gibt er mir aber diesen Fehler zurück:
Notice: Undefined variable: db in /usr/www/users/deltafe/ml-systems/mlsystem/expand/classes/mainsettings.php on line 48 Fatal error: Call to a member function query() on a non-object in /usr/www/users/deltafe/ml-systems/mlsystem/expand/classes/mainsettings.php on line 48
 
Du musst der Klasse die DB-Instanz übergeben. Zum Beispiel beim Erstellen, so wie du es derzeit mit $search machst. Wenn du die DB-Instanz in einer Instanz-Variablen ablegst, kannst du sie innerhalb der Instanz nutzen.
 
Zurück