Fehler: Resource id #4 ?!?!!
zerko
- php
Hey...
ich will Datensätze aus einer MySQL Datenbank wiedergeben.
Die versuche ich durch...
$autor = mysql_query("SELECT tblHauptBuecher.Autor,tblHauptBuecher.BuchID FROM tblHauptBuecher WHERE tblHauptBuecher.BuchID = 'VB5WT' ");
...dann bekomme ich jedoch den Fehler "Resource id #4" ..??!?!
Was ist falsch??
Hallo!
$autor = mysql_query("SELECT ... WHERE tblHauptBuecher.BuchID = 'VB5WT' ");
...dann bekomme ich jedoch den Fehler "Resource id #4" ..??!?!
Die Syntax lautet resource mysql_query ( string Anfrage [, resource Verbindungs-Kennung]).
Also nehme ich an, daß keine Verbindung zur Datenbank besteht, denn eine aktuelle Verbindung würde von Deiner Abfrage benutzt werden.
Beste Grüße
Viennamade
Also nehme ich an, daß keine Verbindung zur Datenbank besteht, denn eine aktuelle Verbindung würde von Deiner Abfrage benutzt werden.
Beste Grüße
Viennamade
-> die Verbindung habe ich vorher so erstellt...
mysql_connect($db_serv, $db_user, $db_pass) or die('ERROR!');
mysql_select_db($db_name, $db) or die('ERROR!');
Es funktioniert z.b. die Ausgabe der Anzahl der Zeilen, also muss eine Verbindung bestehen...
Vielleicht liegt der Fehler in der Aussage der Strings..
-> echo $autor;
?????
Hallo,
... also muss eine Verbindung bestehen...
OK, dann hat es etwas anderes:-)
Mache doch ein "echo mysql_error();" nach der Abfrage!
Vielleicht liegt der Fehler in der Aussage der Strings..
-> echo $autor;
Scheint so, Du mußt das Resultset fetchen (s. Posting von Lulu).
Beste Grüße
Viennamade
Hello Vienna,
Du hast ihn falsch verstanden. Lulu hatte es schon gesehen, was er gemacht hat. Er hat
$res = mysql_query(...);
echo $res;
durchgeführt und nicht
$res = mysql_query(...);
while ($_line = mysql_fetch_row($res))
{
echo implode('\t| ',$_line)."<br />\n";
}
Liebe Grüße aus http://www.braunschweig.de
Tom
Huhu Zerko
ich will Datensätze aus einer MySQL Datenbank wiedergeben.
Die versuche ich durch...$autor = mysql_query("SELECT tblHauptBuecher.Autor,tblHauptBuecher.BuchID FROM tblHauptBuecher WHERE tblHauptBuecher.BuchID = 'VB5WT' ");
...dann bekomme ich jedoch den Fehler "Resource id #4" ..??!?!
Was ist falsch??
Falsch ist Deine Annahme, dass mysql_query Dir direkt das gewünschte Ergebnis liefern würde.
Vielmehr erhältst Du "nur" einen Zeiger auf die Ergebnismenge oder eben "Resource ID".
Die Daten musst Du erst noch abholen.
Z.b mit mysql_fetch_assoc();
Für Deine Abfrage würde das so aussehen
$query = <<< EOT
SELECT
Autor,
BuchID
FROM
tblHauptBuecher
WHERE
BuchID = 'VB5WT'
EOT;
(Es ist i.d.R. nützlich das SQLStatement in eine Variable zu stecken, denn dann kann man es leicht zur Fehlersuche ausgeben lassen.)
Den Namen der Tabelle musst Du nur angeben wenn Du mehrere Tabellen abfragst, und auch nur dann wenn Spaltennamen mehrdeutig sein können.
$result = mysql_query($query) OR die (mysql_error());
while ($row = mysql_fetch_assoc($result)){
// tue was mit den Daten
printf ('Der Autor ist %s <br>', $row['Autor']);
}
Viele Grüße
lulu
Hello Lulu,
dich erwischt es jetzt:
Falsch ist Deine Annahme, dass mysql_query Dir direkt das gewünschte Ergebnis liefern würde.
Vielmehr erhältst Du "nur" einen Zeiger auf die Ergebnismenge oder eben "Resource ID".
Die Daten musst Du erst noch abholen.
Falsch ist nämlich auch Deine Annahme, (bzw. Darstellung) dass man einen Zeiger auf die Ergebnismenge bekommenn würde. Man bekommt bestenfalls ein Displacement innerhalb der zugehörigen Ressourcentabelle. Sowas bezeichnet man in der IT eigentlich als Handle. Mit diesem handle können nun wiederum nur die passenden Funktionen etwas anfangen, denn nur die kennen den ZEIGER auf die Ressourcentabelle und können daher das Displacement (den Index) in der Tabelle nutzen. In der Tabelle selber stehen dann i.d.R. die Adressen (Zeiger) zu den Daten, die Adressen der eigentlich zuständigen Funktionen, etc. Durch dieses Verfahren ist es z.B. möglich, in der Applikation immer dieselbe Funktion zum Lesen von Daten zu benutzen, obwohl ggf. bei ineigen Ressourcen ein Filter ("Treiber") zwischengeschaltet ist und bei anderen nicht.
Ich möchte das hier mal mit fastix halten, der sich beklagt hat, dass "Programmierer" heute von den Hintergründen keinen Schimmer mehr haben. Da ich annehme, dass DU noch mehr als Schimmer hast, bitte ich Dich doch mal um sachkundige Unterstützung bei der Erarbeitung und Vermittlung der Zusammenhänge. (Apropos: Das Camp ist angeleiert...)
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo Tom,
... Handle ... Funktionen ... ZEIGER ... Ressourcentabelle
Ich habe Deine Ausführung ein paar mal gelesen, ich glaube ich würde sie verstehen, wenn ich wüßte was Ressourcentabellen sind.
Darf ich dich bitten?
Beste Grüße
Viennamade
Hello,
... Handle ... Funktionen ... ZEIGER ... Ressourcentabelle
Ich habe Deine Ausführung ein paar mal gelesen, ich glaube ich würde sie verstehen, wenn ich wüßte was Ressourcentabellen sind.
Darf ich dich bitten?
oder wollen wir erst tanzen? *ggg*
Eine Handletabelle (Ressourcentabelle) enthält Angaben über die Ressourcen eines bestimmten Typs. Das können z.B. sein:
Das sind dann die Spalten.
Die Zeilen werden eben durch die einzelnen Ressourcen gebildet. Die erste Zeile einer ressourcetabelle hat i.d.R. den Index 1 (Eins). Der Index 0 wird zur Kennzeichnung eines ungültigen Handles benutzt.
Du findest bestimmt unter "Table of File Handles" im Google noch mehr Info.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo Tom,
... Handle ... Funktionen ... ZEIGER ... Ressourcentabelle
Eine Handletabelle (Ressourcentabelle) enthält ...
brr, ein Frontalangriff auf die informationale Geschlossenheit meines Gehirns.
Danke!
Viennamade
Huhu Tom
dich erwischt es jetzt:
auweia
Falsch ist nämlich auch Deine Annahme, (bzw. Darstellung) dass man einen Zeiger auf die Ergebnismenge bekommenn würde. Man bekommt bestenfalls ein Displacement innerhalb der zugehörigen Ressourcentabelle. Sowas bezeichnet man in der IT eigentlich als Handle.
Ok, so gesehen hast Du recht das der Begriff "Zeiger" der auf die Daten _zeigt_ hier falsch ist.
Richtiger wäre also "Griff" (handle) mit dem man auf die Daten zu_greifen_ kann.
Muss also meinen Schimmer verbessern ... ;-)
(Apropos: Das Camp ist angeleiert...)
Hatte Dir eine Email geschickt weil ich Deine verloren hatte.
Hat sich vermutlich der SpamFilter geschnappt, werde mal einen anderen Absender probieren.
Viele Grüße
lulu
hi,
Hey...
ja, auch hey ...
aber diese frage hast du erst vor knapp einer woche, am vergangenen sonntag, schon gestellt.
warum hast du die dortigen antworten nicht beachtet, sondern fragst erneut?
falls du lediglich nicht in der lage warst, deinen thread nach längerer zeit wiederzufinden, mache dich bitte mit dem </archiv/> vertraut, dort steht er jetzt nämlich unter http://forum.de.selfhtml.org/archiv/2004/5/80982/.
gruß,
wahsaga