Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
unexpected T_VARIABLE in [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-consult PHP Entwicklung
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
unexpected T_VARIABLE in


 
Frittenbude
28-07-2006, 22:25 
 
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:
$result = mysql_query(@sql) OR die(mysql_error());

Die genutzte Variable @sql sieht wie folgt aus:
$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

 
onemorenerd
28-07-2006, 22:41 
 
$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).

 
Frittenbude
28-07-2006, 23:08 
 
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
error_reporting(E_ALL);

include 'inc/config.php';
// Konfigurationsdatei laden

@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_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

 
onemorenerd
28-07-2006, 23:24 
 
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!

 
Frittenbude
28-07-2006, 23:27 
 
Dies hier ist Zeile 23:
result = mysql_query($sql) OR die(mysql_error());

Gruß,
Frittenbude

 
onemorenerd
28-07-2006, 23:44 
 
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?!

 
Frittenbude
28-07-2006, 23:49 
 
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

 
onemorenerd
28-07-2006, 23:58 
 
Wenn du hier anderen Code zeigst als deinem Parser, bringt das alles nichts.
Zeig mal alles und zwar in der aktuellen Version.

 
Frittenbude
29-07-2006, 00:01 
 
OK, hier ist der gesamte Code der PHP-Datei:


<head>
<title>Filmdatenbank</title>
</head>
<?php
error_reporting(E_ALL);

include 'inc/config.php';
// Konfigurationsdatei laden

mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_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";
}

?>

 
asp2php
29-07-2006, 00:23 
 
es fehlt ein Semikolon am Ende von $sql = "...";

 
onemorenerd
29-07-2006, 00:25 
 
mei jetz habbichs: $sql="...";

 
Frittenbude
29-07-2006, 10:25 
 
Hallo,

der Fehler ist nun weg. :)

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

Gruß,
Frittenbude

 
asp2php
29-07-2006, 10:58 
 
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.

 
Frittenbude
29-07-2006, 11:24 
 
Alles klar. Werde ich in Zukunft beachten.

Gruß,
Frittenbude

 
Deeemon
07-12-2008, 22:59 
 
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 )
{
Hier >>> $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>

 
unset
07-12-2008, 23:11 
 
Code Tags benutzen.

 
onemorenerd
08-12-2008, 00:14 
 
while($aRowData=mysql_fetch_assoc( $rExecute )

Was fehlt da? Falls du es nicht siehst, hier nochmal eine reduzierte Form dieser Zeile:

( ()

 
Deeemon
08-12-2008, 00:44 
 
echt hilfreich ich danke dir habs nich erkannt xD


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:13 Uhr.