![]() |
[PHP] Mysteriöser Fehler
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:
Da geht alles einwandfrei.
$article = load_article("2");
In einer anderen Datei mache ich exakt dasselbe, dann kommt aber der Fehler:
Code:
:wall: Was soll das?
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
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:
PS: $getid ist 2
/* 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); [/edit] |
Re: [PHP] Mysteriöser Fehler
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 ![]() LG, Xong |
Re: [PHP] Mysteriöser Fehler
Und man sollte id noch auf int casten:
Code:
Sicher ist sicher.
mysql_query("SELECT ID, short_title, title, content FROM articles WHERE ID = " . intval($id));
|
Re: [PHP] Mysteriöser Fehler
Zitat:
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:
@manu: Danke, das hab ich verdrängt. |
Re: [PHP] Mysteriöser Fehler
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 ![]() 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. ^^ |
Re: [PHP] Mysteriöser Fehler
:roll:
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... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz