unexpected T_VARIABLE in

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

  • unexpected T_VARIABLE in

    Hallo,

    ich arbeite mich gerade in MySQL und PHP ein. Ich hatte schon einige Fehler, die mit Konfigurationen zusammen hingen - konnte sie aber lösen.

    Nun habe ich ein Problem, zu dem ich mittels Google keine für meinen Fall hilfreichen Tipps finden konnte.

    Und zwar erhalte ich folgende Fehlermeldung in der error.log des Apache-Servers:

    [Fri Jul 28 21:09:43 2006] [error] [client 127.0.0.1] PHP Parse error: parse error, unexpected T_VARIABLE in C:\\Programme\\Apache Software Foundation\\Apache2.2\\htdocs\\index.php on line 23, referer: http://localhost/
    Hier ist Zeile 23:
    PHP-Code:
    $result mysql_query(@sql) OR die(mysql_error()); 
    Die genutzte Variable @sql sieht wie folgt aus:
    PHP-Code:
    $sql "SELECT Filmname, Sprache FROM Film ORDER BY Film;" 
    Weiß jemand, woran das liegen könnte? Die Syntax dürfte nicht fehlerhaft sein.

    Für jede Hilfe wäre ich Euch sehr dankbar.

    Gruß,
    Frittenbude

  • #2
    $sql, nicht @sql

    Mit error_reporting() kannst du übrigens dafür sorgen, dass solche Fehler direkt in der Ausgabe des Scripts landen und mußt nicht immer ins Error-Log schauen. Dann bemerkst du auch solche Fehler, die den Ablauf des Scripts nicht beenden (Warnings).

    Kommentar


    • #3
      Hallo,

      danke für die schnelle Antwort.

      Ich habe Deine Hinweise gerade befolgt. Aber das Ergebnis bleibt genau das selbe.

      Hier ist mal ein Auszug des bisherigen PHP-Skriptes:

      PHP-Code:
      <?php
          error_reporting
      (E_ALL);

          include 
      'inc/config.php';
          
      // Konfigurationsdatei laden
          
          
      @mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());
          
      // Verbindung zu MySQL herstellen
          
      mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
          
      // Auswahl einer Datenbank
          
           
      $sql "SELECT
                      Filmname,
                      Sprache
                  FROM
                      Film
                  ORDER BY
                      Film;"
                      
          
      $result mysql_query($sql) OR die(mysql_error());
          
          echo 
      "Meine Filmsammlung:<br />\n";
          while(
      $row mysql_fetch_assoc($result)) {
              echo 
      $row['Filmname']." &gt; ".$row['Sprache']."<br />\n";
          }
          
      ?>
      Übrigens, das error_reporting() habe ich bereits mit im Skript gehabt. Aber Fehlermeldungen werden trotzdem nicht im Browser angezeigt.

      EDIT:
      Ich habe irgendwie die Vermutung, als Läge es an einer nicht korrekten Konfiguration (in PHP?).

      Vor diesem Fehler hatte ich auch schon Probleme, die ich in der php.ini durch folgende Zeile beheben konnte:
      ;extension=php_msql.dll
      extension=ext\php_mysql.dll
      ;extension=php_oci8.dll
      Vorher war die entsprechende Zeile in der Mitte auskommentiert, wie die anderen beiden auch.

      Vielleicht ist auch noch von Bedeutung, dass ich als php.ini die Datei "php.ini-recommended" als Basis genommen habe und dort quasi bis auf die genannte Änderung nichts angefasst habe.

      Gruß,
      Frittenbude
      Zuletzt geändert von Frittenbude; 28.07.2006, 22:13.

      Kommentar


      • #4
        Original geschrieben von Frittenbude
        Ich habe irgendwie die Vermutung, als Läge es an einer nicht korrekten Konfiguration (in PHP?).
        Wohl kaum, die Fehlermeldung besagt ja, dass der Parser in Zeile 23 (markiere die mal bitte!) eine Variable erkannt hat, die dort aber nicht stehen darf. Den Parser kann man nicht konfigurieren, denn damit würde man die Syntax der Sprache ändern.

        Bis auf das Semikolon in der Query sehe ich da oben erstmal keinen Fehler.
        Solltest dir aber abgewöhnen, eventuelle Fehlermeldungen mit @ zu unterdrücken!

        Kommentar


        • #5
          Dies hier ist Zeile 23:
          result = mysql_query($sql) OR die(mysql_error());

          Gruß,
          Frittenbude

          Kommentar


          • #6
            Da fehlt ein $ vor result! In obigem Code ist es da, aber da ist auch Zeile 23 eine ganz andere. Womöglich editierst du eine andere Datei, als die, die den Fehler wirft?!

            Kommentar


            • #7
              Sorry, das $ ist beim Kopieren verloren gegangen. In meiner Datei ist es vorhanden.

              Dass oben im Auszug meiner php-Datei die Zeile 23 nicht mit der genannten Zeile übereinstimmt liegt am Header der Datei, den ich nicht mit hier herein kopiert habe.

              Gruß,
              Frittenbude

              Kommentar


              • #8
                Wenn du hier anderen Code zeigst als deinem Parser, bringt das alles nichts.
                Zeig mal alles und zwar in der aktuellen Version.

                Kommentar


                • #9
                  OK, hier ist der gesamte Code der PHP-Datei:

                  PHP-Code:
                  <head>
                      <title>Filmdatenbank</title>
                  </head>
                  <?php
                      error_reporting
                  (E_ALL);

                      include 
                  'inc/config.php';
                      
                  // Konfigurationsdatei laden
                      
                      
                  mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());
                      
                  // Verbindung zu MySQL herstellen
                      
                  mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
                      
                  // Auswahl einer Datenbank
                      
                       
                  $sql "SELECT
                                  Filmname,
                                  Sprache
                              FROM
                                  Film
                              ORDER BY
                                  Film;"
                                  
                      
                  $result mysql_query($sql) OR die(mysql_error());
                      
                      echo 
                  "Filme in der Datenbank:<br />\n";
                      while(
                  $row mysql_fetch_assoc($result)) {
                          echo 
                  $row['Filmname']." &gt; ".$row['Sprache']."<br />\n";
                      }
                      
                  ?>

                  Kommentar


                  • #10
                    es fehlt ein Semikolon am Ende von $sql = "...";

                    Kommentar


                    • #11
                      mei jetz habbichs: $sql="..."[COLOR=red];[/COLOR]

                      Kommentar


                      • #12
                        Hallo,

                        der Fehler ist nun weg.

                        Ich danke Euch vielmals. Wirklich erstklassiges Forum mit guten Leuten, muss ich sagen.

                        Gruß,
                        Frittenbude

                        Kommentar


                        • #13
                          Original geschrieben von Frittenbude
                          Hallo,

                          der Fehler ist nun weg.

                          Ich danke Euch vielmals. Wirklich erstklassiges Forum mit guten Leuten, muss ich sagen.

                          Gruß,
                          Frittenbude
                          merke dir eins: die Angabe von Zeilennummer ist fast immer die Zeile davor, d.h. es wird immer die Zeile angegeben, wo der Parser stoppt. Daher bitte ein paar Zeilen davor anschauen und ggf. hier posten und nicht nur die (angeblich) betreffende Zeile.

                          Kommentar


                          • #14
                            Alles klar. Werde ich in Zukunft beachten.

                            Gruß,
                            Frittenbude

                            Kommentar


                            • #15
                              hi also ich hab da auch ein grosses kleines problem undzwar dieses:
                              der zeigt mir hier immer wieder neue T_Variablen an
                              kann mir jemand helfen bitte



                              <?php

                              require_once('inc/config.inc.php');
                              require_once('inc/functions.inc.php');
                              ?>
                              <head>
                              <title>Ranking</title>
                              <link href="style.css" rel="stylesheet" type="text/css"/>
                              <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                              </head>
                              <body>
                              <?php
                              $sQuery = "SELECT t2.channelnum, t2.charname, t2.level, t2.class FROM accounts AS t1 INNER JOIN characters AS t2 ON t1.username = t2.accountname WHERE t1.accesslevel >= 100";
                              $rExecute = mysql_query( $sQuery );
                              $iNbOfResult = mysql_num_rows($rExecute);

                              $ctr = 0;

                              while($aRowData=mysql_fetch_assoc( $rExecute )
                              {
                              [COLOR=crimson]Hier[/COLOR] >>> $aData['channelnum'][$ctr] = $aRowData['channelnum'];
                              $aData['charname'][$ctr] = $aRowData['charname'];
                              $aData['level'][$ctr] = $aRowData['level'];
                              $aData['level2'][$ctr] = RealLevel( $aRowData['level'], $aRowData['class'] );
                              $aData['class'][$ctr] = $aRowData['class'];
                              $ctr++;
                              }

                              if( 1 < $iNbOfResult )
                              {
                              array_multisort( $aData['level2'], SORT_NUMERIC, SORT_DESC, $aData['channelnum'], $aData['charname'], $aData['level'], $aData['class']);
                              }

                              echo'
                              <table style="border: 0px solid blue; font-size: 12px;" cellpadding="0" cellspacing="0">
                              <tr>
                              <td style="width: 20px;"></td>
                              <td style="background-color: #4074bf; width: 450px; height: 5px;" colspan="5"></td>
                              <td style="width: 20px;"></td>
                              </tr>
                              <tr style="color: #062a5e;">
                              <td style="width: 20px;"></td>
                              <td style="border-right: 1px solid #2a5eaa; background-color: #4074bf; width: 50px; height: 30px;" align="center">No</td>
                              <td style="border-right: 1px solid #2a5eaa; background-color: #4074bf; width: 100px; height: 30px;" align="center">Level</td>
                              <td style="border-right: 1px solid #2a5eaa; background-color: #4074bf; width: 100px; height: 30px;" align="center">Name</td>
                              <td style="border-right: 1px solid #2a5eaa; background-color: #4074bf; width: 100px; height: 30px;" align="center">Classe</td>
                              <td style="background-color: #4074bf; width: 100px; height: 30px;" align="center">Statu</td>
                              <td style="width: 20px;"></td>
                              </tr>
                              <tr>
                              <td style="width: 20px;"></td>
                              <td style="background-color: #4074bf; width: 450px; height: 5px;" colspan="5"></td>
                              <td style="width: 20px;"></td>
                              </tr>
                              ';

                              $iNo = 1;

                              while( $iNo <= $iNbOfResult )
                              {
                              echo '
                              <tr>
                              <td style="width: 20px;"></td>
                              <td style="width: 450px; height: 5px;" colspan="5"></td>
                              <td style="width: 20px;"></td>
                              </tr>
                              <tr>
                              <td style="width: 20px;"></td>
                              <td style="border-right: 1px solid #4074bf; width: 50px; height: 30px;" align="center">'.$iNo.'</td>
                              <td style="border-right: 1px solid #4074bf; width: 100px; height: 30px;" align="center">'.RealLevel2( $aData['level'][$iNo-1], $aData['class'][$iNo-1] ).'</td>
                              <td style="border-right: 1px solid #4074bf; width: 100px; height: 30px;" align="center">'.$aData['charname'][$iNo-1].'</td>
                              <td style="border-right: 1px solid #4074bf; width: 100px; height: 30px;" align="center">'.Job($aData['class'][$iNo-1]).'</td>
                              <td style="width: 100px; height: 30px;" align="center">'.Statu($aData['channelnum'][$iNo-1]).'</td>
                              <td style="width: 20px;"></td>
                              </tr>
                              <tr>
                              <td style="width: 20px;"></td>
                              <td style="border-bottom: 1px solid #4074bf; width: 450px; height: 5px;" colspan="5"></td>
                              <td style="width: 20px;"></td>
                              </tr>
                              ';
                              $iNo++;
                              }

                              echo'
                              </table>
                              ';
                              ?>
                              </body>
                              </html>
                              Zuletzt geändert von Deeemon; 07.12.2008, 22:03.

                              Kommentar

                              Lädt...
                              X