echo $begrüßung;
Das Forum hätte auch nichts dagegen, wenn du die immer noch PDO betreffenden Probleme in einem Thread zusammengefasst hättest.
$valueroot = addslashes(ROOTDIR);
addslashes() macht irgendwas, nur nicht das was für die jeweilige Datenbank angemessen ist. Deswegen gibt es ja die Methode quote(), die sich ganz nach den Gegebenheiten des verwendeten Treibers richtet.
$DBO->exec("UPDATE configdirectories SET ConfigDirectoriesPath='$valueroot' WHERE ConfigDirectoriesName = 'RootDirectories'");
Wenn ich nun aber versuche mit quote() zu maskieren
$valueroot = $DBO->quote(ROOTDIR,PDO::PARAM_STR);Dann wird nichts eingetragen.
Der Pfad bekommt dann zusätzlich noch Hochkommas vorne und hintern also;
'C:\Programme\Test\wasnoch'
Wenn du quote() verwendest, dann erledigt das im Gegensatz zu addslashes() (und mysql_real_escape_string()) nicht nur das Maskieren sondern auch das Quotieren. Es macht aus dem
C:\Programme\Test\wasnoch
ein
'C:\Programme\Test\wasnoch'
Das
$DBO->exec("UPDATE configdirectories SET ConfigDirectoriesPath='$valueroot' WHERE ConfigDirectoriesName = 'RootDirectories'");
müsste also als
$DBO->exec("UPDATE configdirectories SET ConfigDirectoriesPath={$DBO->quote(ROOTDIR)} WHERE ConfigDirectoriesName = 'RootDirectories'");
notiert werden, um ein ordentliches SQL-Statement zu erhalten.
Mal ne dumme Frage:
Wenn man das "addslashes()" weglässt steht in der DB der Pfad ganz ohne Backslashes.
Entfernt das MySQL automatisch?
Die zusätzlichen Slashes sind die "Transportsicherung". Sie werden nur dann benötigt, wenn der Wert zusammen mit den SQL-Klauseln in einem String notiert werden soll. Dies dient der Unterscheidung zwischen Befehls- und Datenbestandteilen dieses Strings. In der Datenbank werden die Daten ohne Transportsicherung eingetragen. Sie kommen auch ohne diese zurück, weil auf dem Rückweg nur reine Daten ohne Befehlsbestandteile übertragen werden.
echo "$verabschiedung $name";