
65999
11.12.2008, aktualisiert am 09.11.2016
Probleme mit meinem sql code!
Hi.
Ich habe mich seit Anfang dieser Woche an die Materie php und mysql gewagt:
Und zwar stehe ich davor, dass mir die sql Abfrage in Zeile 16 kein Ergebnis liefert!
Wo ist der Fehler?
Ich habe mich seit Anfang dieser Woche an die Materie php und mysql gewagt:
<?PHP
session_start();
$name = $_SESSION['username'];
$EvendID = $_SESSION['EventID'];
echo $Event;
echo $name;
if( isset($_POST['Teilnahme']) && !empty($_POST['Teilnahme']) ) {
echo $_POST['Teilnahme'];
} else {
echo 'Es wurde keine Option ausgewählt!';
}
include("db.php");
$sql = 'SELECT MitgliederID FROM `Mitglieder` WHERE BenutzernameMitglieder='$name';
$sql = mysql_query($sql);
while($sql = mysql_fetch_object($sql))
{
echo $sql->MitgliederID;
}
?>
Und zwar stehe ich davor, dass mir die sql Abfrage in Zeile 16 kein Ergebnis liefert!
Wo ist der Fehler?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 103860
Url: https://administrator.de/forum/probleme-mit-meinem-sql-code-103860.html
Ausgedruckt am: 20.04.2025 um 07:04 Uhr
9 Kommentare
Neuester Kommentar
Du hast hier einen Syntax Fehler drinne:
Bei 1 beginnt dein PHP-String, bei 2 endet er, alles danach ist syntaktisch falsch.
Du müsstest schreiben:
Vorsicht! Auch wenn das so funktioniert, ist es ein enormes Sicherheitsrisiko und hat so nichts in der Praxis verloren.
Deine While-Schleife funktioniert übrigens so auch nicht: Nach dem ersten durchgang wird $sql überschrieben und sie kann kein zweites mal ausgeführt werden.
Grüße
Max
$sql = 'SELECT MitgliederID FROM `Mitglieder` WHERE BenutzernameMitglieder='$name';
^ ^
1 2
Bei 1 beginnt dein PHP-String, bei 2 endet er, alles danach ist syntaktisch falsch.
Du müsstest schreiben:
$sql = "SELECT MitgliederID FROM `Mitglieder` WHERE BenutzernameMitglieder='$name'";
Vorsicht! Auch wenn das so funktioniert, ist es ein enormes Sicherheitsrisiko und hat so nichts in der Praxis verloren.
Deine While-Schleife funktioniert übrigens so auch nicht: Nach dem ersten durchgang wird $sql überschrieben und sie kann kein zweites mal ausgeführt werden.
Grüße
Max
Das mit der while Schleife ist logisch, der Benutzername gibt es ja auch nur 1x und soll danach aufhören!
Nein ist es nicht.
Effektiv produzierst du einen PHP-Fehler und dadurch bricht die While-Schleife ab.
Wenn du wirklich nur eine Zeile holen willst brauchst du eben auch nur
$row = mysql_fetch_object($query);
schreiben.
Bitte füge an dein Script, während du es entwickelst ganz oben
error_reporting(E_ALL);
ini_set('display_errors','On');
Was meinst du mit Vorsicht! Was meinst du mit Sicherheitsrisiko, wie wäre es richtig gewesen?
Dazu empfehle ich mal als Ausgangspunkt http://de.wikipedia.org/wiki/SQL-Injection

Gelöscht, weil Anleitung zum Hacken...
Hallo,
dein Problem liegt hier:
Gehen wir das mal Stück für Stück durch:
1. session_start() - soweit OK (Generell empfiehlt sich diese Funktion als allererstes auf einer Seite aufzurufen, sonst könntest du auf manchen Servern Probleme kriegen)
2. $name = $_POST['name']; - Wenn das POST-Feld name gesetzt ist wird es $name zugewiesen, ist es nicht gesetzt wird PHP $name den Wert false zuweisen.
3. isset($name) prüft ob eine Variable vorhanden ist. Dies muss hier immer der Fall sein, weil du in Schritt 2 auch immer eine Zuweisung hast.
Ich hoffe das hilft dir weiter
Grüße
Max
dein Problem liegt hier:
session_start();
$name = $_POST['name'];
if(!isset($name))
{
$name = "Gast";
}
$_SESSION['username'] = $name;
Gehen wir das mal Stück für Stück durch:
1. session_start() - soweit OK (Generell empfiehlt sich diese Funktion als allererstes auf einer Seite aufzurufen, sonst könntest du auf manchen Servern Probleme kriegen)
2. $name = $_POST['name']; - Wenn das POST-Feld name gesetzt ist wird es $name zugewiesen, ist es nicht gesetzt wird PHP $name den Wert false zuweisen.
3. isset($name) prüft ob eine Variable vorhanden ist. Dies muss hier immer der Fall sein, weil du in Schritt 2 auch immer eine Zuweisung hast.
Ich hoffe das hilft dir weiter
Grüße
Max