Apostroph herausfiltern aus Variablen-Werten

Hallo,
ich habe noch nicht viel Erfahrung in PHP und kämpfe seit 3 Tagen intensiv mit der Aufgabe, eine XML-Datei zu parsen und die erhaltenen Werte in eine MySQL-Datenbank zu übergeben.

Mit Hilfe von Google und diversen Foren habe ich schon einen weiten Weg zurückgelegt, aber stoße ständig auf neue Schwierigkeiten… Wie das halt so ist als Newbie… :unamused:

Also, hier meine aktuelle “Klippe”:
Die Strings, die ich aus der XML-Datei erhalte, können Hochkommata enthalten. Das stört natürlich beim “INSERT INTO”. Wie kann ich die herausbekommen oder z.B. durch “_” ersetzen?

$sql1 = "INSERT INTO tabelle (gc_code, gc_name, gc_typ, groesse, difficulty, terrain, " .
	"owner, placed, land, region, log_datum, log_text)" .
	"VALUES ('$name', '$urlname', '$gctype', '$gccontainer', " .
    "'$gcdifficulty', '$gcterrain', '$gcplaced_by', '$time', " .
    "'$gccountry', '$gcstate', '$gcdate', '$gctext')";

    $sql2 = str_replace("\'", "_", $sql1);
echo $sql2; // für mich zur Kontrolle, bis ich´s mal hingekriegt hab
$ergebnis = mysqli_query($db, $sql)
	or die('Fehler bei Datenbankabfrage: '. mysql_error());

So funktioniert es gar nicht, und wenn, wäre es ja auch Mist, weil dann die Hochkommata um die Strings ebenfalls verschwinden würden…
Übrigens: Wenn ich den Insert-Befehl, den ich erhalte über PHPMyAdmin absetze (nachdem ich vorher das ’ entfernt habe), werden die Daten in die DB geschrieben.

Ich hoffe, es ist nur ein Anfänger-Denkfehler und ihr könnt mir schnell helfen… DANKE!!

http://php.net/manual/de/mysqli.real-escape-string.php

Danke! Die Funktion kannte ich noch nicht.

Aber jetzt habe ich ja alle Hochkommata escaped, auch die Stringbegrenzer…

INSERT INTO tabelle (gc_code, gc_name, gc_typ, groesse, difficulty, terrain,
owner, placed, land, region, log_datum, log_text)
VALUES (\'GC16YD8\', \'Mac Gyver\'s warm-up\', \'Unknown \', \'Regular\', 
... usw.

Du musst die Funktion natürlich auf die einzelnen Werte anwenden, die du in die Query einsetzt – und nicht auf die komplette Query …

Oh, sorry. Wie peinlich… :red: Da hab ich das Beispiel von php.net wohl zu vereinfacht übernommen…

Danke! Ich werd´s gleich mal versuchen.

:wink:

Danke! Hat geklappt!

Schön, dass hier auch den Anfängern so nett und schnell geholfen wird! :slight_smile:

Die genannte Funktion solltest du übrigens bei Datenbankabfragen immer auf Variablen, die etwa vom Besucher deiner Seite stammen, anwenden, ansonsten könnten böse Menschen deine Abfrage ziemlich einfach manipulieren (eben weil die Hochkommata ansonsten so übernommen werden).

Mfg :wink2: