supplied argument is not a valid MySQL-Link
beni
- php
0 dedlfix0 benii
0 Der Martin0 benii0 MudGuard0 Vinzenz Mai0 MudGuard
Hallo zusammen,
hab da ein Problem mit einem MySQL-Link. Ich will eine Funktion schreiben, welche mir eine Datenbankabfrage ausführt. Ich komm aber nicht dahinter, was der Fehler ist. Kann mir jemand helgen?
Code:
function vdetail($x)
{
$detailQuery = "SELECT * FROM tabX WHERE id LIKE '$x'";
if(!($detailResult = mysql_query($query, $connection)))
showerror();
$detailRow = mysql_fetch_array($detailResult);
return $detailRow;
}
Hi!
hab da ein Problem mit einem MySQL-Link. Ich will eine Funktion schreiben, welche mir eine Datenbankabfrage ausführt. Ich komm aber nicht dahinter, was der Fehler ist. Kann mir jemand helgen?
Gemäß deiner Überschrift übergibst du ein Argument an eine Funktion, die dieses in der Form nicht haben will. Bitte überzeuge dich mit Kontrollausgaben (var_dump() ist am besten geeignet), was du für einen Wert übergibst, lies im PHP-Handbuch nach, was die Funktion stattdessen erwartet, und forsche dann nach, wo du diesen Wert herbekommst und warum das so ist. Auch hier hilft das PHP-Handbuch. In der Regel ist es so, dass die mysql_*()-Funktionen im Fehlerfall etwas anderes zurückgeben als im Normalfall. Das muss man durch einen geeignete Fallunterscheidung im Programmfluss berücksichtigen.
Lo!
Hallo zusammen,
ich habe nun endlich den Fehler gefunden.
Da ich zum ersten mal selbst erstellte Funktionen benutze ging es ein wenig länger.
Das Problem lag bei der Variablen $connection
Ich habe der Funktion zwar $x übergeben, jedoch habe ich $connection
nicht übergeben. Da die Funktion sozusagen ein eigener bereich ist, sind zuvor definierte Variabeln dort nicht mehr gültig und müssen extra übergeben werden.
Danke für eure Hilfe und Gruss
benii
Hallo,
$detailQuery = "SELECT * FROM tabX WHERE id LIKE '$x'";
if (!($detailResult = mysql_query($query, $connection)))
an diesen beiden Zeilen sollte dir eigentlich etwas auffallen ...
Ciao,
Martin
an diesen beiden Zeilen sollte dir eigentlich etwas auffallen ...
Ciao,
Martin
Sorry, da hat sich ein Fehler beim übertragen ins Forum eingeschlichen.
if(!($detailResult = mysql_query($detailQuery, $connection)))
showerror();
$detailRow = mysql_fetch_array($detailResult);
Hi,
if(!($detailResult = mysql_query($detailQuery, $connection)))
showerror();
$detailRow = mysql_fetch_array($detailResult);
Falls ein Fehler auftritt, zeige ihn an. Und mach dann ganz normal weiter, als ob der Fehler nie aufgetreten wäre ...
cu,
Andreas
Hallo Andreas,
if(!($detailResult = mysql_query($detailQuery, $connection)))
showerror();
$detailRow = mysql_fetch_array($detailResult);
Falls ein Fehler auftritt, zeige ihn an.
nicht ganz:
Falls ein Fehler auftritt oder die Abfrage keinen Datensatz zurückliefert (was kein Fehler ist), zeige an, es sei ein Fehler aufgetreten (also auch dann, wenn kein Fehler vorlag).
Und mach dann ganz normal weiter, als ob der Fehler nie aufgetreten wäre ...
... und mache selbst im Fehlerfall ganz normal weiter, ...
Freundliche Grüße
Vinzenz
Hi,
nicht ganz:
Falls ein Fehler auftritt oder die Abfrage keinen Datensatz zurückliefert (was kein Fehler ist), zeige an, es sei ein Fehler aufgetreten (also auch dann, wenn kein Fehler vorlag).
Aus der Doku:
Return Values
For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.
For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, mysql_query() returns TRUE on success or FALSE on error.
Ich sehe hier nicht, wie bei einem SELECT, der keinen Datensatz liefert, in den if-Zweig verzweigt werden sollte.
Du sagst ja selbst, daß es kein Fehler ist, wenn der select nichts liefert, also müßte mysql_query eine resource liefern - welche negiert nicht zu false evaluiert.
cu,
Andreas
Hallo Andreas,
For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.
For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, mysql_query() returns TRUE on success or FALSE on error.
ich sollte nicht posten, wenn ich schon längst ins Bett gehöre.
Du hast völlig recht und ich Unsinn geschrieben.
Freundliche Grüße
Vinzenz