WinFuture-Forum.de: Mysql <-> Php - Ich Fall Vom Glauben Ab - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Mysql <-> Php - Ich Fall Vom Glauben Ab


#1 Mitglied ist offline   web189 

  • Gruppe: aktive Mitglieder
  • Beiträge: 218
  • Beigetreten: 25. September 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Niex

geschrieben 18. Mai 2009 - 18:29

Hallo Leute,
heute bitte ich euch bei einem Problem um Hilfe, was mich mittlerweile 6 Stunden beschäftigt. Ich binziemlich frustriert und hoffe, dass mir jemand helfen kann.

Ok, es existiert folgende tabelle:


rpgvz_user
 - id (int)
 - username (TEXT)
 - pw (TEXT)
 - ort (int)
 - gruppe(int)
 - mysite (TEXT)



In dieser Tabelle gibt es folgenden Datensatz

1
web189
*einmd5schlüssel*
1
1
*leer*


In die leere Zelle soll nun mittels php ein string geschrieben werden, der von einem WYSIWAYYG editor geschrieben geliefert wurde. Hier einmal der relevante php Code:


Ausder Datenbankklasse:
function connect()
{
	$db = @new mysqli($this->server, $this->user, $this->passwort,$this->datenbank);
	if (mysqli_connect_errno()) {
		die ('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
	}
	
	return $db;
}

/* Abfrage wird ausgeführt */
function sendQuery($query)
{
	$db = $this->connect();
	$result = $db->query($query);

		if (!$result) { die ('Etwas stimmte mit dem Query nicht: '.$query.$db->error);}
	
	
	return $result;
}



Aus der Benutzerklasse:

function setmysite($user,$content)
{
$dbx = new datenbank();
$sql = 'UPDATE rpgvz_user SET rpgvz_user.mysite = "'.$content.'" WHERE rpgvz_user.id='.$user;
//$sql = 'UPDATE rpgvz_user SET rpgvz_user.mysite = "zzt <br />" WHERE rpgvz_user.id=1';
$result = $dbx->sendQuery($sql);
}



und zu guter letzt die parameterübergabe:

	case 'save':
	$user->setmysite($_SESSION['id'],$_POST['spaw2'] );
	$content = "Dein Profil wurde erfolgreich gespeichert";
	break;


Okay, bisher habe ich folgendes Rausgefunden:
- Alle Variablen werden Korrekt übergeben. $_POST['spaw2'] enthält html code
- Die auskommentierte Zeile in der funktioniert ohne Probleme.
- Wenn die Zelle mysite bereits einen Wert besitzt, wird dieser bei ausführen der Anfrage
gelöscht. (was ja in ordnung ist) Danach ist die Zelle allerdings leer, enthält also GAR
NICHTS
- weder sql noch ein php meldet fehler
- auch das filtern der htmlzeichen via htmlspecialchars() hat keinen effekt
- Ich hab mir einmal den $sql ausgeben lassen und den Query per hand ausgeführt - dann funktionierts



Ich bin echt ratlos, wär echt cool, wenn mir jemand helfen könnte...



Vielen Dank im Vorraus,

Mfg
web189

Dieser Beitrag wurde von web189 bearbeitet: 18. Mai 2009 - 18:30

0

Anzeige



#2 Mitglied ist offline   TO_Webmaster 

  • Gruppe: Moderation
  • Beiträge: 3.212
  • Beigetreten: 27. März 02
  • Reputation: 82
  • Geschlecht:Männlich

geschrieben 18. Mai 2009 - 19:00

Vielleicht stimmt etwas mit den Anführungszeichen oder Magic Quotes nicht.

Tipp: Da du Mysqli verwendest, solltest du auch Prepared Statements verwenden. Dann musst du dir hier erstmal keine Gedanken um sowas machen und bist nicht anfällig gegen SQL-Injections.

MfG TO_Webmaster
The old reverend Henry Ward Beecher
called a hen the most elegant creature.
The hen pleased for that,
laid an egg in his hat.
And so did the hen reward Beecher.
0

#3 Mitglied ist offline   web189 

  • Gruppe: aktive Mitglieder
  • Beiträge: 218
  • Beigetreten: 25. September 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Niex

geschrieben 18. Mai 2009 - 19:13

Danke für deine Antwort - mit den Anfü+hrungszeichen hab ich schon alle Varianten durchprobiert.... Tabellen in Anführungszeichen, Werte in Anführungszeichen ect... Normalerweise bekommt man wenigstens eine Fehlermeldung.... nur diesmal wird einfach diese zelle gelöscht - sonst nichts. Ich muss leider gestehen, dass mir "Prepared Statements" noch nichrts sagt, ich werde mich aber informieren.

Danke schonmal
0

#4 Mitglied ist offline   TO_Webmaster 

  • Gruppe: Moderation
  • Beiträge: 3.212
  • Beigetreten: 27. März 02
  • Reputation: 82
  • Geschlecht:Männlich

geschrieben 18. Mai 2009 - 20:14

Falls du wider besseren Wissens keine Prepared Statements verwenden willst, schau dir zumindest das hier mal an.

MfG TO_Webmaster
The old reverend Henry Ward Beecher
called a hen the most elegant creature.
The hen pleased for that,
laid an egg in his hat.
And so did the hen reward Beecher.
0

#5 Mitglied ist offline   web189 

  • Gruppe: aktive Mitglieder
  • Beiträge: 218
  • Beigetreten: 25. September 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Niex

geschrieben 19. Mai 2009 - 07:37

Okay danke, habs inzwischen mit Hilfe von Prepared Statements hinbekommen - kann dann zu.


Vielen Dank nochmal,


mfg
web189
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0