rob: STR_REPLACE in Verbindung mit mysql

Beitrag lesen

Hi!

Warum schreibt du denn das Datum mit Unterstrichen in die DB?
Wenn du das da anders reinsetzt, hast du die Mgölichkeit, dein Datum später einfacher weiter zuveratbeiten. Bei MySQL gibt es dafür extra Feldtypen.
MySQL bietet darüber hinaus auch selbst einige Datums-/Zeit-Funktionen.

habe ich ein str_replace benutzt. Der : soll nun durch ein _ ersetzt werden. Funktioniert.

Ja, das ist möglich. Es wäre allerdings auch möglich, String nicht mit PHP zu ersetzen, sondern das von MySQL machen zu lassen.
Schau mal im MySQL-Handbuch nach REPLACE (INTO).

$planet = str_replace(":","_",$_POST['planet']);
    mysql_query("INSERT INTO planeten (player,universum,planet) VALUES (".$_GET['player'].",".$_POST['universum'].",".$planet." )" ) or die (mysql_error());

Das es diese Spalt nicht gibt ist mir klar.

Na gut. Wo ist dann dein Problem? Die Fehlermeldung ist doch eindeutig.
Ich verstehe nicht ganz, wo du nicht weiterkommst.

ICh weiß es fehlen noch div. Sicherheitssachen, die kommen aber später.
Was könnte mein Problem in dem o.g. Fall sein?

Nie, nie, niemals Daten, die von außen kommen, einfach ungeprüft übernehmen und weiterverarbeiten.
In $_GET['player'] oder $_POST['universum'] keine potentiell gefährlichen Zeichen wie z.B. ein Backslash enthalten sind. In deinen Variablen darf auch in gar keinem Fall MySQL-Code entahleten sein.
Mit dieser Abfrage ist deine Seite offen für einen Angriff mittels SQL-Injection: http://de.wikipedia.org/wiki/SQL-Injektion
Benutze Funktionen wie mysql_real_escape_string(), preg_replace(), addslashes(). Sonderzeichen müssen in jedem Fall escaped werden, um etwaigen SQL-Code unschädlich zu machen.

Gruß,
rob