2016-11-12 2 views
1


Ich versuche, ein paar Spalten aus einer bestimmten SQL-Tabelle zu erhalten, erhalten, die wie folgt funktioniert:
Wie DB-Anschluss für meine Klasse/Funktion

<?php 
include("config.php"); 

// SELECT DATABASE TO ECHO FROM 
$sql = "SELECT * from GuildInformation"; 

// ECHO FROM THE ^SELECT 
$data = $conn->query($sql); 

foreach ($data as $row) { 
// HERE IS SOME CODE WHICH DOES WORK 
} 
?> 

^diese Methode funktioniert perfekt, jetzt will ich um eine Funktion erstellen:

<?php 
include("config.php"); 

function SelectGuildInfo() { 
// SELECT DATABASE TO ECHO FROM 
$sql = "SELECT * from GuildInformation"; 

// ECHO FROM THE ^SELECT 
$data = $conn->query($sql); 

foreach ($data as $row) { 
// HERE IS SOME CODE WHICH DOES WORK 
}} 
?> 

wenn ich die Funktion SelectGuildInfo(); i rufen erhalten den folgenden Fehlercode:

Fatal error: Call to a member function query() on a non-object in /users/l4g/www/84732842323772/submit.php on line 12 

Linie 12 ist: $data = $conn->query($sql);

Also, wenn ich include("config.php"); in meiner Funktion es wieder nicht funktioniert, aber ich möchte, dass die Datenbankverbindung außerhalb meiner Funktion sein, weil ich mehr als 1 für dieses Skript haben werden und nur 1 enthalten.


Außerdem bin ich zu dieser ganzen Sachen sehr neu und wollen eigentlich mit einer Klasse für meine Datenbankverbindung, um zu versuchen, damit ich mit diesem kam:

<?php 

class dbConn{ 
    protected static $db; 
    private function __construct(){ 
     try{ 
      self::$db = new PDO('mysql:host=localhost;dbname=NAME', 'USR', 'PWD'); 
      self::$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     } 
     catch(PDOException $e){ 
      echo "Connection Error: " .$e->getMessage(); 
     } 
    } 
    public static function getConnection(){ 
     if(!self::$db){ 
      new dbConn(); 
     } 
     return self::$db; 
    } 
} 

?> 

Wie erhalte ich verwenden meine Klasse in meinem Skript, also muss ich nicht etwas für jede Funktion einschließen, die ich benutzen möchte ?!

Vielen Dank für Ihre Hilfe!
Nachdem nun diesen Code und es läuft perfekt gerade! :)

include("database.class.php"); 

$db = dbConn::getConnection(); 

function SelectGuildInfo($db) 
+0

Siehe http://stackoverflow.com/questions/12769982/reference-what-does-this-error-mean-in-php/12769983#12769983 – Fang

+0

leider bin ich etwas neu dazu und verstehe nicht das meiste davon @ Fang aber danke – pbahmann1

+0

Mysql-Klasse ist veraltet. Verwenden Sie mysqli oder PDO. Wie für die Fehlermeldung, es sagt Ihnen, dass $ Conn ist kein Objekt im Zusammenhang mit der Funktion – Fang

Antwort

1

Ihr Code funktioniert nicht, weil $conn innerhalb des SelectGuildInfo() und $conn aus der Config zwei verschiedene Variablen sind.

Damit es funktioniert, müssen Sie $conn = Database::getInstance() in Ihre SelectGuildInfo hinzufügen (vorausgesetzt, $conn von Ihrem Arbeitsbeispiel ist Instanz der Datenbank).

P.S. Bitte verwenden Sie keine mysql_* Funktionen, verwenden Sie stattdessen mysqli oder PDO.

+0

Ja, ich habe meine Klasse aktualisiert, eine neue mit PDO gemacht. zumindest hoffe ich es ist PDO tho - danke für deine Hilfe! – pbahmann1