php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Fehlermeldung bei mySQL-class von Benny


 
virusse
17-01-2005, 11:05 
 
Moin. Ich bin derzeit drüber mich in die OOP von PHP reinzudenken und habe deswegen mal das Tutorial von Benny mit der mySQL - Class ausprobiert. Allerdings spuckt mit der Parser nen Fehler aus, den ich bis jetzt nicht in der Lage war zu beheben. $link = new mysqllink();
class mysqllink
{
var $db_host = const_db_host;
var $db_name = const_db_name;
var $db_user = const_db_user;
var $db_pass = const_db_pass;
var $db_port = const_db_port;

function db_connect()
{
$this->link = @mysql_connect($this->db_host.':'.$this->db_port,$this->db_user, $this->db_pass)
or die("{connect} Datenbankfehler: ".mysql_errno()." :".mysql_error());
$this->select_database = @mysql_select_db($this->db_name, $this->link)
or die("{select_db} Datenbankfehler: ".mysql_errno()." :".mysql_error());
}

function db_close()
{
$this->link = mysql_close();
}

function db_query($querystr)
{
if($this->link == false)
{
$this->db_connect();
}
if($this->link == false)
{
return;
}
$res = mysql_query($querystr, $this->link)
or die("{query} Datenbankfehler : ".mysql_errno()." : ".mysql_error());
return $res;
}
} //end of class


Notice: Undefined property: mysqllink::$link in g:\wamp\www\test\inc\db_class.php

Und zwar fliegt er bei der Methode Query raus, wenn er die erste if-Abfrage bearbeitet. Ich tu mich leider noch ziemlich schwer mit OOP-Programmierung, deswegen hoff ich mir kann jemand weiter helfen.


$anfrage = $link->db_query("SELECT user_id, user_name, user_password
FROM kc_user
WHERE user_name = '".$_POST['login_username']."';");


Hier ist auch nochmal der Aufruf der Query-Methode, falls ich da einen Fehler haben sollte.

In diesem Sinne möchte ich auch noch eine Frage loswerden:

if($this->link == false)
{
$this->db_connect();
}
if($this->link == false)
{
return;
}

Bei diesem Codeausschnitt aus der Methode db_query habe ich zweimal hintereinander eine identische Anfrage. Ich laufe in die erste Schleife, stelle fest das ich noch keinen Wert auf $link liegen habe und starte die Methode db_connect. In der unteren Schleife prüfe ich nochmal ob ich nun eine Verbindung habe oder? Aber eigentlich ist diese doch sinnlos, weil wenn ich keine Verbindung habe, fliege ich doch eh bei db_connect schon mit einer Fehlermeldung raus oder nicht?

 
ghostgambler
17-01-2005, 11:13 
 
die Klasse hat keine Variable $link, demnach kannst du der nicht vorhandenen Variable in $query weder was zuweisen, noch was abrufen, genauso in close, connect dürfte demnach auch eigentlich nicht richtig funktionieren...

btw. wieso lernst du Klassenhandling noch in der Version4? Wenn du dich wirklich mit OOP beschäftigen willst, schnapp dir PHP Version 5 und das Tutorial hier
http://www.coding.at/tutorials.php?id=6&sid=
(meines :D ) und verschwende deine Zeit nicht mit dem Lernen von mehr oder weniger schnell Nutzlosen....


^^=Meine Meinung!

 
virusse
17-01-2005, 11:54 
 
$link = new mysqllink();
class mysqllink
{
....
}


Das heißt also das die Zuweisung innerhalb der "Klassen-Datei" so also nicht funzt? Das würde dann heißen das diese mySQL-Klasse von Benny also gar nicht funktionieren kann. Ich habe sie ziemlich 1:1 abgeschrieben und nur einige Variablen mal geändert.

 
asp2php
17-01-2005, 12:07 
 
mach mal so:

class mysqllink
{
var $link = NULL;
var ...

...
}

dann sollte funz.

btw: du sollst dich dringend über Klassen in PHP informieren. Abschreiben nützt dir gar nicht, wenn du noch nicht mal weißt, wie man eine Klasse implementiert.

 
virusse
17-01-2005, 12:40 
 
Jaja das mach ich ja. Ich brauche die Klasse eigentlich nicht, aber ich wollte sie mir als Beispiel her nehmen. Fress mich gerade durch ghostgamblers Tutorial.
An Beispielen seh ich eher den Sinn. Allerdings solltet ihr vielleicht mal das Tutorial überarbeiten, wenn es so nicht funktioniert. Nicht das noch mehr so Leute wie ich so dämliche Fragen stellen. ;)

So wie ich das sehe hat Benny das Objekt $connection definiert, was bei mir $link heißt und greift dann aber in der Klasse darauf zu, weil $Connection wird nur einmal außerhalb deklariert in dem es die Eigeschaften von mysqlconnection erbt und dann nicht wieder.

 
Timecop
09-02-2005, 22:53 
 
Hallo ich habe ebenfalls bennys Turi ausprobiert:teach:




{connect} Database Error: 1045 : Access denied for user: 'wwwrun@localhost' (Using password: YES)




Bin Anfänger:dontknow:


Habe alles 1 zu eins so gemacht, funktioniert nicht woran liegt der fehler?


habe nach 1 Stunde testen erst diesen beitrag gefunden, wenn das turi wirklich so nicht funktioniert ist das sehr frustrierend für anfänger.


Bitte helft mir das sollte mein erstes PHP script werden.

Gruß

 
schmalle
10-02-2005, 11:39 
 
@Timecop Du hast ungültige Login Daten angegeben.

 
Timecop
10-02-2005, 12:14 
 
In welchen bereich... habe ich falsche daten angegeben ?

habe alles genauso wie im turi gemacht.

Siehe hier http://www.php-resource.de/tutorials/read/40/1/


Die verbindungsdaten sind auch ok, verstehe ich nicht mist.....


<?
$host = "localhost"; // MySQL Hostname
$database = "datenbankname"; // MySQL Database
$db_username = "bla"; // MySQL Username
$db_pass = "blabla"; // MySQL Password


define(dbHost, $host);
define(db, $database);
define(dbUser, $db_username);
define(dbPass, $db_pass);

?>


GrußLogindaten entfernt/geändert, sei bitte zukünftig vorsichtiger. edited by asp2php.

 
schmalle
10-02-2005, 12:23 
 
Hmm, evtl. funktioniert define() auf deinem Server nicht. Schreibe die Logindaten einfach mal direkt in die Class.

 
Timecop
10-02-2005, 12:23 
 
danke für den tipp aber die waren schon verändert.

kannst du mir auch helfen ?

Gruß

 
asp2php
10-02-2005, 12:24 
 
hat der User auch entsprechende Rechte? schon mal mit dem User: root probiert?

 
Timecop
10-02-2005, 12:25 
 
habe ich auch schon probiert nichts...

die datenbank ist aber ok.


Gruß

 
Timecop
10-02-2005, 12:27 
 
Original geschrieben von asp2php
hat der User auch entsprechende Rechte? schon mal mit dem User: root probiert?

root habe ich probiert nichts........


Gruß

 
asp2php
10-02-2005, 12:31 
 
versuch mal die Logindaten direkt in die Klasse anstatt Konstante einzutragen:

class mysqlconnection{

var $host = 'localhost';
var $database = 'database_name';
var $db_username = 'root';
var $db_pass = 'password';
var $db_port = '3306';
...

 
Timecop
10-02-2005, 12:40 
 
direkt in die database_class habe ich mit und ohne jede variation.


funktioniert das tut überhaupt so wie abgebildet, kann das nicht mal ein profi schecken.


danke für eure zeit und hilfe

 
wahsaga
10-02-2005, 12:44 
 
Original geschrieben von Timecop
funktioniert das tut überhaupt so wie abgebildet, kann das nicht mal ein profi schecken.
da gibt's nicht viel zu checken, du hast ganz einfach ein problem beim verbinden mit deiner datenbank.

da sind zweifel, ob die login-daten wirklich die richtigen sind, natürlich angebracht ...

 
Timecop
10-02-2005, 12:50 
 
also ich habe dort 9 datenbänke dort funktionieren die daten.


nukeportal forum alles läuft.


ich habe einen v-server.


werde aber nochmal alles prüfen besser ist besser obwohl habe ich das nicht schon:huep:


Gruß

 
asp2php
10-02-2005, 12:55 
 
was wäre, wenn du die Klasse erstmal vergisst und folgendes tutst:

mysql_connect(...) or die(mysql_error());

und zwar mit den bisherigen Daten. Funz denn die Connection?

 
Timecop
12-02-2005, 10:14 
 
hallo ich denke es liegt an der class.


ich wollte damit eigentlich eine datenbank auslesen (Meine ersten schritte in php)


ich habe aber nun eine bessere lösung gefunden alles in einer datei..
inclusive der configdaten für den server.

auslesen.php



nun kann ich die datenbank auslesen auch genau die zeilen die ich wollte

// define & execute mysql queries
$mysql_query = "SELECT * from elli_turm_blue";
$result=mysql_query($mysql_query);



aber ich bekomme es nicht in eine tabelle in eine htmlseite.



Mein gedankengang ist es gleich die tabelle in die auslesen.php zuschreiben:confused:

ist das möglich und könnt ihr mir helfen besser zeigen wie das funktioniert.

Oder bin ich auf dem holzweg:huep:

 
Niksch
09-08-2005, 15:55 
 
var $host = dbHost;
var $database = db;
var db_username = dbUser;
var $db_pass = dbPass;
var $db_port = dbPort;

function connect(){
$this->connection = @mysql_pconnect($this->host.':'.$this->db_port, $this-> db_user, $this->db_pass) or die("{connect} Database Error: ".mysql_errno()." : ".mysql_error());

=> $db_username != $db_user

Ich hab erst nach ner halben Stunde den Fehler entdeckt, wär vielleicht gut, wenn das Tutorial korrigiert würde :confused:

 
qno
11-08-2005, 01:58 
 
Meiner Meinung nach ist das ein sehr schlechtes Tutorial!
Der Programmierstil schon alleine ist zum Haare raufen.

:teach:

:dontknow:

 
mrhappiness
11-08-2005, 10:09 
 
Sagt's ihm doch einfach ;) (http://www.php-resource.de/forum/member.php?s=&action=mailform&userid=1602)


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:03 Uhr.