Martina: SELECT Abfrage aus eine function. Funktioniert nicht

Ich rufe über eine PHP Seite die config Daten für die Verbindung zur Datenbank auf. Jetzt rufe ich eine function auf in dieser möchte ich auf die Datenbank zugreifen,

$sql = "SELECT * FROM TABLE WHERE ID = '$ID#; $result = mysqli_query($Verbindung,$sql);

bekomme aber einen Fehler

Notice: Undefined variable: Verbindung Warning: mysqli_query() expects parameter 1 to be mysqli, null given in

Irgendwie habe ich das komische Gefühl, das es etwas mit der function zu tun haben muss

  1. Tach!

    $sql = "SELECT * FROM TABLE WHERE ID = '$ID#;

    Das ist so nicht richtig. Einerseits ist da ein Syntaxfehler, der wohl aber nur ein Kopierfehler ist. Und hast du den Fall bedacht, dass in $ID etwas mit ' enthalten sein könnte und das dir bestenfalls dein Statement kaputtmacht, aber auch eine SQL-Injection-Lücke sein kann?

    $result = mysqli_query($Verbindung,$sql);

    bekomme aber einen Fehler

    Notice: Undefined variable: Verbindung
    Warning: mysqli_query() expects parameter 1 to be mysqli, null given in

    Eigentlich sind diese beiden Meldungen ziemlich eindeutig. Die Variable mit dem Namen Verbindung existiert an der Stelle nicht und mysqli_query() kann eine Verbindung, die nicht da ist, nicht verwenden.

    Irgendwie habe ich das komische Gefühl, das es etwas mit der function zu tun haben muss

    Wo immer $Verbindung herkommt, es ist auf dem Weg zu diesen beiden Zeilen verlorengegangen.

    dedlfix.

    1. Bis zur ersten TRUE abfrage geht es, in der function nicht mehr.

      ich weis nicht wo es VERLOREN geht (weine)

      include("inc/config.inc.php");
      
      
      $sql = "SELECT * FROM table WHERE id = 1";
      $result = mysqli_query($Verbindung,$sql);
      $oje= mysqli_fetch_object($result);
      	
      		
      if ($oje==TRUE) {
      	echo'JA';};
      		
      		
      function test()	{	
      	$sql = "SELECT * FROM table WHERE id = 1";
      	$result = mysqli_query($Verbindung,$sql);
      	$oje= mysqli_fetch_object($result);
      		
      			
      	if ($oje==TRUE) {
      		echo'JA';};
      		
      	}
      
      test();
      
      
      1. Tach!

        Bis zur ersten TRUE abfrage geht es, in der function nicht mehr.

        Funktionen haben in PHP einen eigenen Scope. Variablen, die außen erstellt wurden, sind darin nicht existent. Man kann sie mit dem Schlüsselwort global in der Funktion bekanntgeben, aber das ist gemeinhin keine gute Idee. Funktionen übergibt man besser alles als Parameter, was sie zum Arbeiten brauchen, damit man nicht erst ihren Code lesen muss, um zu wissen, was irgendwo bereitgestellt sein muss.

        dedlfix.

  2. beachte:

    Notice: Undefined variable: Verbindung

    Die Warnung ist ein Folgefehler.

    1. @dedlfix war schneller 😉