PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem: MySQLi Object in Funktion


Gamerfun
26.11.2008, 14:08:31
Hallo Miteinander,
ich habe ein kleines Problem, welches mich schon eine Weile aufhealt. Beim Google'n und in der SuFu habe ich nichts passendes gefunden.

Problem:
Ich verbinde per MySQLi mit folgendem Code:
$cevik = @new mysqli($server, $benutzer, $passwort, $datenbank);

Dadurch wird ein Objekt erstellt, welches ich für spaetere Faelle so benutze: $cevik->query() Bis hier hin laeuft alles Prima, nun wollte ich das Objekt in einer Funktion weiter benutzen, doch dann kommt der folgende Fehler:
Fatal error: Call to a member function query() on a non-object in .....php on line 7
Die Zeilen vor und nach der 7. Zeile sehen so aus:
function lesseen($sid)
{

$sql = "SELECT * FROM `eigenschaften` WHERE `siteid` = `".$sid."`";
/*Zeile 7:*/ if($querit = $cevik->query($sql))
{
$daten = $querit->fetch_array(); ....

Nun habe ich mir gedacht, dass das Objekt vllt. nicht Global ist, dann hatte ich die Verbindung in der Funktion unter einem anderem Namen hergestellt, doch es hatte wieder nicht geklappt..

Es kommt immer wieder der gleiche Fehler, egal wie rum ich es drehe, immer hapert es an dem nicht Erkennen des Objektes...

Bitte um Hilfe, Danke im Voraus

Gruss
Gamerfun

agent47
26.11.2008, 14:57:01
versuch es mal mit dem schlüsselwort global


function lesseen($sid)
{
global $cevik;

$sql = "SELECT * FROM `eigenschaften` WHERE `siteid` = `".$sid."`";
/*Zeile 7:*/ if($querit = $cevik->query($sql))
{
$daten = $querit->fetch_array();

Gamerfun
26.11.2008, 15:02:55
Das erstellt nur eine leere Globale... Der Query kann nicht verarbeitet werden..
Auch vor dem Verbinden den Befehl global zu setzen bleibt ohne Erfolg.

agent47
26.11.2008, 15:05:31
wie erstellt eine leere globale, das kennzeichtet diese variable als global, wenn die variable schon definiert ist wird der letzte wert verwendet und wenn nicht dann ist sie leer

Gamerfun
26.11.2008, 15:14:47
Ein Objekt ist doch schon global oder nicht?

What else, it doesn't work - dies gilt für beide Faelle...

DokuLeseHemmung
26.11.2008, 15:19:44
Ich hasse globale Variablen wie die Pest!
Mein Tipp: Mit Stumpf und Stiel ausrotten.

$db = new mysqli($server, $benutzer, $passwort, $datenbank); // wozu das @ Grrr
function lesseen($sid, mysqli $db)
{
$sql = "SELECT * FROM `eigenschaften` WHERE `siteid` = $sid"; // sid ist doch sicherlich numerisch, oder?
if($querit = $db->query($sql))
return $querit->fetch_array();
}

agent47
26.11.2008, 15:24:40
ein objekt ist nich automatisch global

gerade beim db handle würde ich es schon global setzten da man das sonst jeder funktion einzeln mit übergeben muss.

DokuLeseHemmung
26.11.2008, 15:28:00
gerade beim db handle würde ich es schon global setzten da man das sonst jeder funktion einzeln mit übergeben muss.
Unsinn!
Und wenn das Projekt gerade fertig ist, kommt der Auftraggeber und sagt:
"Ach ja, beinahe hätte ich es vergessen, aber für die Ecke, brauchen wir eine zusätzliche Verbindung zu einer anderen DB."
Was machst du dann?
ALLES umstricken? Viel Spass....

Gamerfun
26.11.2008, 15:50:34
Ich habe jetzt die Variablen immer an die Funktionen weitergegeben, so klappt es ganz gut, danke euch.

Gruss
Gamerfun

knight1
26.11.2008, 17:56:48
Hi,
ich arbeite immer folgendermaßen:


$mysqli = new mysqli($server, $benutzer, $passwort, $datenbank);
function funktionsname ()
{
$GLOBALS['mysqli']->query();
}



Kai aka Knight1

DokuLeseHemmung
26.11.2008, 18:57:55
Eine schnelle aber auch dreckige Lösung.
Typisch für Weg 3.



Es gibt nur 3 Wege welche zum Ziel führen:

1. Der goldene Weg
Problem analysieren. Eine Lösung entwickem. Und durchsetzen.

2. Der silberne Weg
Abkucken! Also so machen wie die anderen, welche schon Erfolg damit hatten.

3. Der bronzene Weg
Unter Schmerzen aus Erfahrung lernen

Alle anderen Wege führen nicht zum Ziel!

meikel (†)
26.11.2008, 19:37:35
Und wenn das Projekt gerade fertig ist, kommt der Auftraggeber und sagt:
Für solche Fälle sollte man immer einen geladenen Revolver in griffweite haben.