Wie ersetze ich den einfachen Anführungsstrich?

annalena49

Mitglied
Hi,

möchte verschiedene Sonderzeichen in Textfeldern einer MySQL suchen und ersetzen.
Bei den meisten Sonderzeichen funktioniert das auch.

Bei diesem nicht ( ' )
(Einfacher Anführungsstrich oben)

so sieht meine Suche aus:
PHP:
str_replace(text, '\'', '„')";

Warum wird dieses ( " ) gefunden und dieses ( ' ) nicht?
mfg
Annalena
 
Hallo Annalena,

könntest du ein vollständiges Minimalbeispiel, in dem das Problem auftritt, angeben? Mit deinem Codeschnipsel allein können wir leider nicht viel anfangen.

Grüße, Matthias
 
PHP:
<?php
include ("connect.php");
    $DatabasePointer = mysql_connect($DatabaseHost, $DatabaseUser, $DatabasePassword);
    mysql_select_db($Database, $DatabasePointer);

$sql = "UPDATE table_2 SET text = str_replace(text, '\'', '„')";
if( mysql_query($sql)){
$pruef = TRUE;
}
if (mysql_db_query ($Database, $sql, $DatabasePointer))
?>

Bei anderen Zeichen klappt es, mit dem normalen Anführungsstrich ( ' ) nicht.
 
Du vermischst MySQL und PHP. Soweit ich weiss, gibt es die Funktion str_replace() nur in PHP, nicht aber in MySQL. In MySQL musst Du dafür REPLACE() verwenden.

PHP:
$sql = "UPDATE table_2 SET text = ".mysql_real_escape_string(str_replace($text, '\'', '„'));

oder

PHP:
$sql = "UPDATE table_2 SET text = REPLACE(text,'\'','„')";
 
Zuletzt bearbeitet:
@annalena

Bist Du sicher, dass es dieser Apostroph ' ist und nicht dieser ?

@xanthos
nein - ich suche exakt nach dem gemeinen, normalen Anführungsstrich oben (DEC=34, HEX=$22),
nicht nach dem einfach gekrümmten Anführungsstrich (DEC=213, HEX=$D5)

Ich habe mit beiden versucht mit replace() und mit str_replace(), das Ergebnis blieb jedoch gleich. Stutzig macht mich die Tatsache, dass ich mit meiner Abfrage ja diverse andere Zeichen problemlos finde nur nicht ( ' ). Wäre meine Abfrage falsch würde ich die anderen ja auch nicht finden können.

Was könnte ich nun noch ausprobieren?
 
Zuletzt bearbeitet:
Hi,

Stutzig macht mich die Tatsache, dass ich mit meiner Abfrage ja diverse andere Zeichen problemlos finde nur nicht ( ' ). Wäre meine Abfrage falsch würde ich die anderen ja auch nicht finden können.

Das hattest Du ja hier auch schon gesagt und ich möchte das bei dem Code doch ernsthaft anzweifeln. Es gibt keine MySQL-Funktion str_replace(). Die Abfrage kann nur fehlschlagen, egal, welche Zeichen Du da einsetzt.

Ein

UPDATE tabelle SET feld = REPLACE(feld,'\'','„')

funktioniert dagegen bei mir anstandslos.

LG
 
Ich verstehe nicht warum er bei dir andere Sonderzeichen gefunden hat
Es hätte nichts funktionieren dürfen ich nutze auch immer folgenden Befehl:
Code:
SQL: UPDATE tabelle 
SET spalte = REPLACE(spalte, '\'','„')
 
Zurück