Dtanbank austauschen?

Feldhofe

Erfahrenes Mitglied
Hallo!

Und zwar geht es um ein ewig wiederkehrenedes Problem, nämlich das mit den Sonderzeichen ' und ". Ewig gibt es Probleme damit.
Dem möchte ich nun Abhilfe schaffen:

Sämtliche ' durch &# 39; , die " durch &# 34; (Leerzeichen bitte mal wegdenken ;) ) austauschen.

Erste Frage: Macht sowas überhaupt Sinn oder ist das absoluter Blödsinn? :rolleyes:

Zweite Frage: Wie würde man das machen?
Ich habe in der DB Songtexte gespeichert mit den Variablen $id, $interpret, $titel, $songtext.
Ich will nun in allen Texten von ID 1 bis 1000 $interpret, $titel und $songtext auf besagte Sonderzeichen überprüfen und ggfls. austauschen.
Kann mir dazu jemand vielleicht ein Codeschippsel posten??

Danke für eure Hilfe! :)
Gruß
Feldhofe
 
Zuletzt bearbeitet:
Antwort 1: Nö, is unsinn, wieso sollte man das machen, addslashes reicht doch, oder?
Antwort 2: Sollte sich aufgrund von #1 erübrigen, oder ? =)
 
Original geschrieben von boom
Antwort 1: Nö, is unsinn, wieso sollte man das machen, addslashes reicht doch, oder?
Antwort 2: Sollte sich aufgrund von #1 erübrigen, oder ? =)

Neee....AddSlashes und Stripslashes macht immer Probleme, an der einen Stelle ist es gerade nicht maskiert, an der anderen hast du dafür wieder den blöden Rückstrich stehen....neee...DAS ist nun keine so gute Lösung!

Also, #2 hat sich demnach noch nicht erübrigt! ;)

Feldhofe
 
Hö? Wie meinst du das ?
PHP:
<?php
// $_POST[text] = Lilalo " ' .
$text = addslashes($_POST[text]);
echo stripslashes($text);
?>
 
Nein, so meine ich das nicht!

Ich suche ein Script, welches mir in allen Texten von ID 1 bis 1000 $interpret, $titel und $songtext auf besagte Sonderzeichen überprüfen und mit dem ASCII-Zeichencode (also z.B. & #39;) austauscht!

Feldhofe
 
WICHTIG: ich hafte nicht für verlorene daten *g*
sprich mach ein backup :-)

sql befehl:

update dbtab set txtfeld=replace(txtfeld,'\'','39')

dbtab = die tabelle
txtfeld dein feld in dem du tauschen möchtes..

dat wars..
 
Hmmm....kann man das nicht irgendwie so in der Art machen (bitte Fehler korrigieren!!!)

PHP:
$status=1;
// oder an welche Stelle muss ich den Anfangswert stellen?

if ($status <= 1000)
   {
   $result = mysql_query("select interpret,titel,songtext,verfasser from tabelle where id='$status'");
   while ($row = mysql_fetch_row($result))

        {
        $interpret = ereg_replace("'","'",$row[0]);
        $titel = ereg_replace("'","'",$row[1]);
        $songtext = ereg_replace("'","'",$row[2]);
        $verfasser = ereg_replace("'","'",$row[2]);

        $interpret = ereg_replace(""",""",$interpret);
        $titel = ereg_replace(""",""",$titel);
        $songtext = ereg_replace(""",""",$songtext);
        $verfasser = ereg_replace(""",""",$verfasser);
        // gerade das müsste doch eigentlich einfacher gehen, oder?

        mysql_query("UPDATE tabelle SET interpret=$interpret AND titel=$titel AND songtext=$songtext AND                     verfasser=$verfasser WHERE id=$status)");
        }

   $status++;
   }
}

Feldhofe
 
Irgendwie versteh ich jetzt Dein Problem nicht so ganz richtig. :rolleyes:
Willst Du die Hochkommata ersetzen, damit diese keine Fehler mehr in SQL verursachen? Dann ersetz doch einfach jedes Hochkomma durch zwei Hochkommata, dadurch werden die Hochkommata in SQL durch die entsprechende Escape-Sequenz ersetzt.
 
Hmmm...welche Escape-Sequenz meinst du?

Ich wollte mit diesem Script da oben sämtliche ' und " durch die jeweiligen ASCII-Sonderzeichen ersetzen, eben weil es manchmal doch Probleme gibt.
Mit den ASCII-Dingern ist man auf der sicheren Seite, dachte ich mir...?:rolleyes:
 
Naja, ich find es etwas umständlich, dass über die ASCII-Codes des jeweiligen Zeichens zu machen. Es gibt eben Escapesequenzen, bei denen Zeichen, die normalerweise für die Syntax verantwortlich sind, trotzdem genutzt werden können.
Beispielsweise eine Abfrage wie "UPDATE meine_tabelle SET feld = 'ein text, der ein ' enthält' WHERE id = 1;" wird einen Fehler verursachen, weil der Wert schon beim ersten Hochkomma zu Ende ist und der Rest (das rote) als SQL-Befehl interpretiert wird.
Das kann man lösen, indem man das stattdessen so schreibt: "UPDATE meine_tabelle SET feld = 'ein text, der ein '' enthält' WHERE id = 1;"
Die zweite Abfrage erzeugt keinen Fehler, weil das Hochkomma (welches ja normalerweise zur SQL-Syntax gehört) durch eine Escapesequenz ersetzt wurde.
Das gleiche gibt es auch in PHP und so ziemlich allen anderen Programmiersprachen. Nur ist es in PHP nicht das doppelte Vorkommen, sondern ein führender Backslash: \" statt ".

Ich hoffe, das hat jetzt jeder verstanden. ;)
 
Zurück