php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.04.2005, 00:52  
Gast
 
Beiträge: n/a
Standard Übergebene Variable in SQL Statement

Hallo zusammen!

Habe folgendes Problem und meine Suche im Web war bisher leider erfolglos. Habe die Suche hier im Forum auch erfolglos abgebrochen

Zur Vorgeschichte:
Ich habe eine kleine Homepage geschrieben. Habe die ganze Zeit mit XAMPP 1.4.5 gearbeitet und seit kurzem ein selbst installiertes WAMP (Apache 1.3.28, PHP 4.3.10, MySQL 4.1.10a) am laufen. Seitdem funktionieren meine PHP Skripte nicht mehr richtig. Mit XAMPP lief alles noch phantastisch... An den Dateien wurde nichts geändert.

Problem unter anderem:
Es funktioniert nicht mehr, komplette Beiträge meines Newssystems anzeigen zu lassen.
Zugrunde liegt ein Script, dass nur die Header der News anzeigt. Per Link kann man sich den ganzen Beitrag mit Text anschauen.

Datei, die die Header anzeigt (Auszug):
Code:
$db=mysql_connect($server, $user, $password) or die ("Error while connecting to database");
mysql_select_db($database, $db);
$sql="SELECT * FROM news ORDER BY datetime DESC;";
$sql_result=mysql_query($sql);

while ($sql_echo=mysql_fetch_array($sql_result)) {
	echo "<a href=\"news_show.php?id=" . $sql_echo['id'] . "\">" . $sql_echo['header'] . "</a>";
}

mysql_close();
Datei, die die kompletten News anzeigt (Auszug):
Code:
$db=mysql_connect($server, $user, $password) or die("Error while connecting to database");
mysql_select_db($database, $db);
$sql_query="SELECT * FROM news WHERE id=$id;";
$sql_result=mysql_query($sql_query);
$news_show=mysql_fetch_array($sql_result);

echo $news_show['header'];
echo $news_show['newstext'];

mysql_close();
Als Fehlermeldung bekomme ich folgendes:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource...
Wenn ich mir per mysql_error() die Fehlermeldungen ausgeben lasse, wird das SQL Statement angemeckert. Zur Überprüfung habe ich eine feste "News-ID" verlinkt, dann geht es.
Der Fehler ist also eindeutig in folgender Zeile:
$sql_query="SELECT * FROM news WHERE id=$id;";
Hat jemand zufällig eine Lösung parat?

Weitere Frage in diesem Zusammenhang:
Seitdem ich das neue System am laufen hab, bekomme ich öfters die Fehlermeldung, dass Variablen nicht initialisiert sind. Ist das normal?

Schon mal vielen lieben Dank im Vorraus für die Hilfe!

LG
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.04.2005, 08:37  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

error-reporting
Zum testen von Scripts setzt man normalerweise am anfang des scripts (oder direkt in einer config-datei die immer Includet wird)
PHP-Code:
error_reporting(E_ALL); 
damit werden dann alle Fehler ausgegeben.

select * from
Warum soll ich nicht SELECT * schreiben?
http://www.php-faq.de/q/q-sql-select.html

mysql error
man sollte in seinen Scripten immer mysql_error() verwenden, in etwa so:
PHP-Code:
$sql "SELECT feld1,feld2 FROM table WHERE id=5";
$result mysql_query($sql) or die(mysql_error().'
Query: '
.$sql); 
zum thema uninistalisierte variablen das liegt am oben genannten error_reporting und es ist gut das beim entwickeln aktiviert zu haben, weil man sieht, dass es unsauber ist. und deine probleme rühren wahrscheinlich daher:

register_globals
http://www.phpfriend.de/ftopic26569.html
-> lesen, verstehen, umsetzen und nicht register_globals auf on stellen !!


mfg
robo47
robo47 ist offline  
Alt 22.04.2005, 00:15  
Gast
 
Beiträge: n/a
Standard

Hallo robo47!

Vielen Dank dür deine Hilfe und sorry für die späte Antwort.

Ich werd mich der Sache die Tage annehmen und mir deine Hints reinziehen.

Geb dann an dieser Stelle noch mal Feedback ob ich erfolgreich war.

Kann ja eigentlich nur an der PHP-Konfiguration auf meinem Server liegen. Mal davon abgesehen, dass ich bestimmt nicht das beste PHP schreibe :wink:

LG
 
Alt 22.04.2005, 01:01  
Gast
 
Beiträge: n/a
Standard

Hallo zusammen!

Die Lösung für das beschriebene Problem war eigentlich ziemlich simpel robo47 hat so zu sagen den Nagel auf den Kopf getroffen

Lösung:
Code:
$sql_query="SELECT * FROM news WHERE id=" . $_GET['id'] . ";";
Das wirft für mich aber folgende Frage auf:
Da man sich immer auf der sicheren Seite bewegt, wenn register_globals = OFF gesetzt ist, muss ich doch eigentlich meinem WebSite-Provider in der A... treten... Mein bisheriger Aufbau des Scripts setzt doch vorraus, dass dies nicht der Fall ist. Somit muss ich doch mit einer anscheinend unsicheren Konfigguration zurecht kommen, da es im Web funktioniert, oder? *achselzucken* Korrigiert mich wenn ich falsch liege...
 
Alt 22.04.2005, 01:25  
Erfahrener Benutzer
 
Registriert seit: 14.01.2004
Beiträge: 2.543
fantast
fantast eine Nachricht über ICQ schicken
Standard

richtig. register_globals off bedeutet zwar nicht, dass du absolut sicher bist, aber schon mal ein gutes stueck naeher dran
__________________
Was ist validität?
fantast ist offline  
Alt 22.04.2005, 02:05  
Gast
 
Beiträge: n/a
Standard

@fantast:
hast recht. "replace": sicher durch sicherer
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Variable in Datenbankentrag asa PHP Tipps 2008 11 22.07.2008 09:51
Variable in SQL Anweisung verwenden Beatbox PHP Tipps 2006 2 08.08.2006 16:32
Variable in $this Variable der Klasse benutzen PHP Tipps 2006 5 03.05.2006 20:04
variable wird nich erkannt. Marian PHP Tipps 2006 1 03.04.2006 21:25
problem mit variable snatch-ic PHP Tipps 2007 5 13.12.2005 13:18
Variable durch 2. Variable bestimmen Quagga PHP Tipps 2005-2 11 26.10.2005 17:34
[Erledigt] Variable in DB Datenbanken 1 17.04.2005 15:01
Variable in Variable Matthiasnet PHP Tipps 2005 6 20.03.2005 23:28
[Erledigt] Fehlermeldung unterdrücken wenn keine variable übergeben... PHP Tipps 2005 6 20.03.2005 13:36
Variable in einer Variable Beatbox PHP Tipps 2005 7 15.01.2005 15:55
Warum wird Variable nicht übergeben??? Anuschka PHP Tipps 2005 2 06.01.2005 13:22
[Erledigt] $_SESSION verwandelt variable auf einem Server in ein Array PHP-Fortgeschrittene 2 16.12.2004 13:25
[Erledigt] Variable erst später definieren? PHP Tipps 2004-2 10 04.12.2004 20:23
[Erledigt] Datei einlesen -&gt; in Variable schreiben PHP Tipps 2004 2 22.07.2004 11:33
variable Variablen requesten PHP Tipps 2004 5 08.06.2004 20:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php sql variable in sql staement, variablen in sql statement, varriablen an sql mit a href, variablen in statements php, sql where php variable

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.