AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Mysteriöser Fehler

Ein Thema von DenSchub · begonnen am 28. Okt 2008 · letzter Beitrag vom 28. Okt 2008
Antwort Antwort
DenSchub

Registriert seit: 4. Jun 2006
Ort: Balingen
209 Beiträge
 
#1

[PHP] Mysteriöser Fehler

  Alt 28. Okt 2008, 11:29
Hallo.

Ich habe diese PHP-Funktion.

Auszug mysql.fnc.php (Zeile 15-21)
function load_article($id)
{
$result = mysql_query("SELECT ID, short_title, title, content FROM articles WHERE ID = " . $id);
$result = mysql_fetch_assoc($result);
return $result;
}


Das eine mal rufe ich sie in dateia.php auf, einfach mit:
Code:
$article = load_article("2");
Da geht alles einwandfrei.

In einer anderen Datei mache ich exakt dasselbe, dann kommt aber der Fehler:
Code:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\server\htdocs\dsCMS\functions\mysql.fnc.php on line 18
Was soll das?

PS: Zeile 18 is die Funktion oben, dort beim mysql_fetch_assoc

Grüße, Dennis

[Edit]
Hier mal die ganze Aufruf-Datei (mit fehler). Vielleicht seht ihr mehr als ich..
Code:
/* Include required files */
require_once '../includes/confic.inc.php';
require_once '../functions/mysql.fnc.php';
require_once '../class/template.class.php';
include_once './fckeditor/fckeditor.php';

mysql_connect(CONFIG_MYSQL_HOST, CONFIG_MYSQL_USERNAME, CONFIG_MYSQL_PASSWORD);

$getid = htmlspecialchars($_GET['id']);

$current_article = load_article($getid);
PS: $getid ist 2
[/edit]
Dennis Schubert
Ground Zero is nichts gegen mein Schreibtisch.
  Mit Zitat antworten Zitat
Benutzerbild von Xong
Xong

Registriert seit: 9. Jan 2008
186 Beiträge
 
Delphi 2006 Professional
 
#2

Re: [PHP] Mysteriöser Fehler

  Alt 28. Okt 2008, 11:41
Hi!
Deine Fehlerbehandlung ist grauenhaft.
Wenn die SQL-Abfrage keine Datensätze zurückliefert, enthält $result den boolschen Wert "false". Auf den musst du prüfen, da mysql_fetch_assoc() sonst eben jene Fehlermeldung provoziert.
Desweiteren sollte man ab PHP 5 mit der MySQLi-Klasse arbeiten. Die mysql-Funktionen sind veraltet.

LG,
Xong
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#3

Re: [PHP] Mysteriöser Fehler

  Alt 28. Okt 2008, 11:48
Und man sollte id noch auf int casten:

Code:
 mysql_query("SELECT ID, short_title, title, content FROM articles WHERE ID = " . intval($id));
Sicher ist sicher.
  Mit Zitat antworten Zitat
DenSchub

Registriert seit: 4. Jun 2006
Ort: Balingen
209 Beiträge
 
#4

Re: [PHP] Mysteriöser Fehler

  Alt 28. Okt 2008, 11:50
Zitat:
Deine Fehlerbehandlung ist grauenhaft.
Jo, hier ist das aber auch eher unwichtig.
Nur warum bekommt er keine Datensätze wenn alles stimmt?
Der Parameter wird übergeben, die ID ist vorhanden und ja beim anderen Aufruf geht ja alles.

Zitat:
Desweiteren sollte man ab PHP 5 mit der MySQLi-Klasse arbeiten.
Schön und gut, wenn das Skript nicht auf PHP4 laufen müsste...

@manu: Danke, das hab ich verdrängt.
Dennis Schubert
Ground Zero is nichts gegen mein Schreibtisch.
  Mit Zitat antworten Zitat
Benutzerbild von Xong
Xong

Registriert seit: 9. Jan 2008
186 Beiträge
 
Delphi 2006 Professional
 
#5

Re: [PHP] Mysteriöser Fehler

  Alt 28. Okt 2008, 11:59
Ja, richtig! =)

Generell: Bei einem Kontextwechsel (in diesem Fall PHP->MySQL) sind Daten generell als ungefährlich zu maskieren.
Für SQL-Abfragen ist dafür die Methode real_escape_string() zuständig.
Diese Maskierung kann entfallen, wenn man z. B. explizit auf einen Integer castet.

Aber nutze von außen kommende Daten nie (N-I-E) ohne Überprüfung in kritischen[1] Codesegmenten.

LG,
Xong

[1] Mit kritisch ist hier alle gemeint. Dann machst du auch nichts falsch. ^^
  Mit Zitat antworten Zitat
DenSchub

Registriert seit: 4. Jun 2006
Ort: Balingen
209 Beiträge
 
#6

Re: [PHP] Mysteriöser Fehler

  Alt 28. Okt 2008, 12:03


Fehler gefunden:
In der Connect-Funktion wähle ich schon die Datenbank aus, das geht auch immer, bis auf die Stelle. Wenn ich die DB nochmal extra wähle, geht alles. grml...
Dennis Schubert
Ground Zero is nichts gegen mein Schreibtisch.
  Mit Zitat antworten Zitat
Antwort Antwort


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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz