Hallo Vinzenz,
schon einmal Vielen Dank für deine Mühe.
Nutze: prepared-Statements mit PDO::prepare und gebundenem Parameter (Ausführen bitte nicht vergessen) oder als Alternative baue Dein Statement mit Hilfe von PDO::quote zusammen. Beachte die Hinweise dort :-)
Soweit war ich auch schon ... gut, mittels Quote habe ich nicht gearbeitet, aber selbst das hat nichts geholfen. Ich poste dir einfach mal meinen Test, vll. habe ich ja dort einen Fehler drin.
$text = "VGhpcyBpcyBhbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBEZWxpdmVyeSBTdGF0dXMgTm90aWZpY2F0aW9uLiAAIABEZWxpdmVyeSB0byB0aGUgZm9sbG93aW5nIHJlY2lwaWVudHMgZmFpbGVkLiAAIAAgICAgICAgdGVzdHRlc3R0QHRlc3Rlc3QuY28gACAAIAAgAA0KDQo=";
$Text2 = base64_decode($text);
try {
$dbh = new PDO('mssql:host=NB_SQLSRV;dbname=sqltest', "sqltest", "sqltest");
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
$stmt = $dbh->prepare("insert into dbo.test2 (inhalt) values (:inhalt)");
$stmt->bindParam(':inhalt', $name);
$name = $dbh->quote($Text2);
if ( !$stmt->execute() ) {
echo "statement nicht ausgeführt";
} else {
echo "alles ok";
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
} catch (PDOStatement $e) {
print "Error!: " . $e->errorInfo() . "<br/>";
}
Vielleicht noch ein Hinweis:
Speicher ich mir den decodierten Text in eine TXT-Datei und öffne Sie mit Wordpad, so werden mir Nicht-Ausgefüllte-Rechtecke angezeigt, die wohl das Problem verursachen. Was das aber für Zeichen sind, ist mir leider völlig unklar.
Im Browser selbst sieht man das Zeichen nicht, entweder wird dies als Umbruch gewertet oder als nicht darstellbares Zeichen (so ein schwarz-gefüllter Kreis mit einem Fragezeichen).
Hoffe die Infos helfen noch ein wenig weiter, um das Problem lösen zu können.
Mit freundlichen Grüßen
Frank