MySQL Klasse will nicht so recht
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abrufen
code
datenbank
datum
einbinden
email
garnichts
genaue ursache
gott
herstellen
host
klasse code
kleine test
null
punkt
schliessen
tabelle
url
vorraussetzung
wert null
-
Hey,
da ich in PHP etwas eingerostet bin, komme ich jetzt nicht mehr weiter. Ich habe mir eine MySQL Klasse geschrieben und dazu eine kleine Test.php. Allerdings kommt garnichts, er verbindet anscheinend nicht einmal, denn wenn ich die Datenbank Daten falsch eintrage, kommt auch keine Fehlermeldung.
Hier die Klasse:
<?php /* * * Erstellt von CannaDesign * 01.07.2014, 14:53 Uhr * MySQL Klasse zum verbinden und abrufen von Datenbankeinträgen */ class Database { private $connect = Null; private $result = Null; private $counter = Null; /* Datenbank verbindung aufbauen * Diese Function wird automatisch beim einbinden der Klasse ausgeführt. * */ public function __construction ($host = Null, $db = Null, $user = Null, $pw = Null) { $this->connect = mysqli_connect($host, $user, $pw, TRUE); if($this->connect) { mysqli_select_db($db, $this->connect); die('Erfolg!'); } else { die('<p>Das Herstellen zur Datenbank ist fehlgeschlagen. Bitte kontaktieren Sie den Seiteninhaber.</p>'); } } /* * Datenbankverbindung schliessen (Vorraussetzung es ist eine vorhanden) * */ public function disconnect() { if(is_resource($this->connect)) { mysqli_close($this->connect); } } /* * Query ausführen * */ public function query($query) { $this->result = mysqli_query($query, $this->connect); $this->counter = Null; return $this->result; } public function fetchRow() { return mysqli_fetch_assoc($this->result); } public function fetchArray() { return mysqli_fetch_array($this->result); } /* Zählt die Tabellen aus MySQL */ public function counter() { if($this->counter = NULL && is_resource($this->connect)) { $this->counter = mysqli_num_rows($this->result); } return $this->counter; } } ?>
Und hier die Test.php
<html> <head> </head> <body> <?php require_once 'core/class/Database.inc.php'; $database = new Database('mysql.lima-city.de', 'db_297947_1', '', ''); $db_result = $database->query("SELECT * FROM users WHERE Name = 'Canna'"); while($row = mysqli_fetch_array($db_result, MYSQL_ASSOC)) { echo $row['Name']; echo $row['Email']; } ?> </body> </html>
Ich hoffe mir kann jemand helfen und sagen wo ichn Fehler gemacht habe. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
wenn Du "__construction()" gegen "__construct()" ersetzt, dann könnte es funktionieren.
Gruß flmap -
Gott. Man kann sich auch Blöd anstellen, dachte es hiess construction. Aber danke dir. <3
Edit:
Zwar ruft er jetzt die Klasse auf, aber irgendwie gibt er mir immer aus, dass die Verbindung zur Datenbank nicht hergestellt werden kann. So sieht meine Klasse derzeit aus.
<?php /* * * Erstellt von CannaDesign * 01.07.2014, 14:53 Uhr * MySQL Klasse zum verbinden und abrufen von Datenbankeinträgen */ class Database { private $connect = Null; private $result = Null; private $counter = Null; /* Datenbank verbindung aufbauen * Diese Function wird automatisch beim einbinden der Klasse ausgeführt. * */ public function __construct($host = Null, $db = Null, $user = Null, $pw = Null) { $this->connect = mysqli_connect($host,$user,$pw,$db) or die("Error " . mysqli_error($link)); $this->connect = mysqli_connect(); if($this->connect) { mysqli_select_db($db, $this->connect); } else { die('<p>Das Herstellen zur Datenbank ist fehlgeschlagen. Bitte kontaktieren Sie den Seiteninhaber.</p>'); } } /* * Datenbankverbindung schliessen (Vorraussetzung es ist eine vorhanden) * */ public function disconnect() { if(is_resource($this->connect)) { mysqli_close($this->connect); } } /* * Query ausführen * */ public function query($query) { $this->result = mysqli_query($query, $this->connect); $this->counter = Null; return $this->result; } public function fetchRow() { return mysqli_fetch_assoc($this->result); } public function fetchArray() { return mysqli_fetch_array($this->result); } /* Zählt die Tabellen aus MySQL */ public function counter() { if($this->counter = NULL && is_resource($this->connect)) { $this->counter = mysqli_num_rows($this->result); } return $this->counter; } } ?>
Beitrag zuletzt geändert: 1.7.2014 20:37:32 von cannadesign -
Du könntest Alternativ mit try/catch arbeiten um die genaue Ursache zu finden.
-
cannadesign schrieb:
Wie stellst du dir das vor? Connect und dann gleich noch einmal connect … das wird nix.
$this->connect = mysqli_connect($host,$user,$pw,$db) or die("Error " . mysqli_error($link)); $this->connect = mysqli_connect(); if($this->connect) { // …
Lies dazu übrigens mal in der Dokumentation: *klick*, Punkt »Procedural Style«. -
Ich vergaß, dass ich dieses Problem bereits gelöst habe. Trotzdem vielen Dank für eure Antworten. Allerdings, stehe ich vor dem nächsten.
Wollte nun eine User Klasse erstellen, da meine mysql klasse jetzt richtig funktioniert. Allerdings wird mir immer der Wert NULL ausgegeben, obwohl es einen Datenbankeintrag mit diesen Einträgen existiert.
Sprich $result.
(Ich weiss, dass die Klasse/function noch nicht fertig gebaut ist.)
<?php require 'Database.inc.php'; class User { private $database = NULL; private $result = NULL; public function __construct() { } public function login($email, $pw) { $database = new Database("mysql.lima-city.de", "d", "USER297947", ""); $result = $database->query("SELECT * FROM user WHERE Email = '".$email."' AND Passwort = '".$pw."'"); var_dump($result); } } ?>
Beitrag zuletzt geändert: 1.7.2014 23:18:10 von cannadesign -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage