Ankündigung

Einklappen
Keine Ankündigung bisher.

Was macht extract() bei einer sql-Abfrage??

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Was macht extract() bei einer sql-Abfrage??

    Hallo, ich habe hier zum Beispiel eine sql-Abfrage mit Ausgabe der Daten:

    PHP-Code:
    $cxn connect_to_db('Vars.php');
    $sql_1 'SELECT * FROM order_item;
    $result = mysqli_query($cxn,$sql_1)
        or die ('
    sql_1'.mysqli_error($cxn));

    $n_row = mysqli_num_rows($result);     
    if($n_row < 1)
        {
            echo '
    Kein daten vorhanden';
            exit();
        }

        while($row = mysqli_fetch_assoc($result))
        {
           foreach ($row as $field => $value)

           {
               echo $field.' 
    '.$value.'<br/>';
           }

            } 
    Jetzt habe ich in einem Buch das gleiche Beispiel nur einfach mit

    extract($row); anstatt der foreach-Schleife (s.o.)

    Laut PHP: Hypertext Preprocessor importiert extract() Variablen eines Arrays in die aktuelle Symboltabelle.

    Aber was bedeutet Syboltabelle?
    Wikipeadia:In der Informatik ist eine Symboltabelle eine von Übersetzerprogrammen wie Compiler oder Interpreter verwendete Datenstruktur.

    Letzendlich sollen die Daten ja aber für den User ausgegeben werden?
    Wie kann ich den Zusammenhang verstehen?

    Vielen Dank!
    Gruß, Iago

  • #2
    Mit Symboltabelle sind die aktuell verfügbaren Variablen gemeint. Beispiel:

    PHP-Code:
    $array = array('a' = > 1'b' => 2);
    extract($array);
    // jetzt gibts folgende Variablen
    $a
    $b
    // mit den Werten aus dem Array 
    Wenn du es auf die $row anwendest kannst du halt mit Variablen arbeiten die den Spaltennamen entsprechen. Ich würd das aber nicht machen, extract() ist meiner Meinung nach NIE nötig!

    Kommentar


    • #3
      Also wird aus einer SQL-Spalte z.B.: ship_name
      dann $ship_name?

      z.B. für:

      PHP-Code:
      $sql 'SELECT ship_name,ship_street,ship_city,ship_state_ship_zip,phone,email
              FROM Customer_Order WHERE order_number = "'
      .$_SESSION['order_number'].'"'
      Also wenn das so stimmt, dann versteh ich totzdem nicht, was extract()
      so spezifisch macht. Ich habe immer
      gedacht, dass mysqli_fetch_assoc die Zuordnung von Werten zu (assoziativen) Array-Variablen schon vornimmt?

      Die beiden folgenden Beispiele ziegen auch das selbe an:

      PHP-Code:
      $row mysqli_fetch_assoc($result);

            
      extract($row);

            echo 
      var_dump($row).'<br/>'
      und

      PHP-Code:
      while($row mysqli_fetch_assoc($result))
          {

            echo 
      var_dump($row).'<br/>';

              } 

      Kommentar


      • #4
        Ja das Array wird auch nicht verändert, es werden eben nur die Werte im Array "extrahiert"! Somit sind die Werte am Array eben durch Variablen repräsentiert die eben wie die Keys im Array benannt sind.

        Aber wie gesagt, für so was ist extract wirklich nicht geeignet, verwende lieber das Array.

        Kommentar


        • #5
          o.k., danke Flor1an!!

          Kommentar


          • #6
            Ganz sinnvoll finde ich extract für Funktionen, wenn man die Anzahl der Parameter nicht kennt. Ich benutze das gerne für PHP-Templates:

            PHP-Code:
            <?php
            // array reinstecken
            $data = array ();
            $data['name']  = 'Horst';
            $data['alter'] = 23;

            myTemplate::show ('viewPerson' $data);

            // in der Funktion direkt als Variablen nutzen

            function viewPerson ($data)
              {
              
            extract ($data);

              
            ?><h1>Hllo <?php echo $name?></h1>
              <p>Willkommen zurück im Usercenter!</p>
              <p>Du bist Jahre <b><?php echo $alter?></b> alt :(</p>
              <?php
              
            }
            Ansonsten sind die Arrays selbst meister sinnvoller zu benutzen.
            [COLOR="#F5F5FF"]--[/COLOR]
            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
            [COLOR="#F5F5FF"]
            --[/COLOR]

            Kommentar

            Lädt...
            X