beni: supplied argument is not a valid MySQL-Link

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;  
}  

  1. 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!

    1. 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

  2. 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

    --
    Lieber eine gesunde Verdorbenheit als eine verdorbene Gesundheit.
    1. 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);  
        
      
      
      1. 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

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
        1. 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

          1. 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

            --
            Warum nennt sich Andreas hier MudGuard?
            O o ostern ...
            Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
            1. 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