staging.inyokaproject.org

SQL Problem mit HTML Sonderzeichen

Status: Gelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

gnude

Avatar von gnude

Anmeldungsdatum:
11. Juli 2014

Beiträge: 843

Ich habe ein Problem mit einem kleinen SQL Projekt. Ich möchte gerne HTML Code in eine Datenbank speichern bzw. den dort hinterlegten Text ändern. Allerdings bricht das System immer ab weil er über die ";" in den Text stolpert. Ein Beispiel:

UPDATE eintrag SET bezeichnung='Codeschnipsel1', inhalt='Hallo Welt   hier klemmt es', metabeschreibung='' WHERE id='1'

Wenn ich diese Query in PhpMyAdmin absetzte bricht er am Semikolon ab, vermutlich weil er das als Ende interpretiert. Die normalen HTML Enity's bringen mich auch nicht weiter da sie alle mit Semikolon enden. Wie schaffe ich es das er das Semikolon in der Datenbank speichert/aktuallisiert?

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17630

Welche Datenbank benutzt Du denn, Postgresql, MySql, Oracle, ...?

Welche Version?

Hast Du irgendwelche Settings verändert, Zeichensatz, locale, ...?

Hier eine MySql-Sitzung mit MySqlsh, da ich kein phpMyAdmin benutze. (Ist das My ein Hinweis auf MySql?)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
 MySQL  localhost:33060+ ssl  fbb  SQL > UPDATE eintrag SET bezeichnung='Codeschnipsel1', inhalt='Hallo Welt   hier klemmt es', metabeschreibung='' WHERE id='1';
Query OK, 1 row affected (0.0156 sec)

Rows matched: 1  Changed: 1  Warnings: 0
 MySQL  localhost:33060+ ssl  fbb  SQL > select * from  eintrag;
+----+----------------+------------------+----------------------------------+
| id | bezeichnung    | metabeschreibung | inhalt                           |
+----+----------------+------------------+----------------------------------+
|  1 | Codeschnipsel1 |                  | Hallo Welt   hier klemmt es |
+----+----------------+------------------+----------------------------------+
1 row in set (0.0008 sec)

Die Apostrophe um das Semikolon müssten verhindern, dass das Semikolon als SQL-Sonderzeichen interpretiert wird. Da ich das per Copy-and-Paste übernommen habe ist auch eine Verwechslung von Apostroph mit Accentzeichen ausgeschlossen, es sei denn, Du hättest den Code nicht per C-n-P übernommen, sondern abgeschrieben und im Original wäre es falsch.

gnude

(Themenstarter)
Avatar von gnude

Anmeldungsdatum:
11. Juli 2014

Beiträge: 843

Ich benutze MariaDB 10.5.11 und darauf PhpMyAdmin 4.9.7 ich habe die SQL Abfrage mittels CnP kopiert, so das die Anführungsstriche korrekt sind. Die Fehlermeldung tritt auf wenn ich die Abfrage bei PhpMyAdmin einfüge und dort simuliere. Möchte ungern nicht geprüfte Abfragen auf ein genutztes System absetzten.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17630

Und wie lautet die Fehlermeldung?

gnude

(Themenstarter)
Avatar von gnude

Anmeldungsdatum:
11. Juli 2014

Beiträge: 843

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near hello welt &nbsp)' at line 1 Ich weiss nicht ob die FEhlermeldung hilfreich ist, aber wenn ich das Semikolon entferne klappt es.

homer65

Avatar von homer65

Anmeldungsdatum:
8. November 2005

Beiträge: 586

Hoerbert

Avatar von Hoerbert

Anmeldungsdatum:
3. Oktober 2007

Beiträge: 375

Ich vermute auch, dass das Problem in PhpMyAdmin liegt. Versuch mal den gleichen Query mit einem anderen Client (mysql auf der Kommandozeile oder der MySQL Workbench) auszuführen.

homer65

Avatar von homer65

Anmeldungsdatum:
8. November 2005

Beiträge: 586

Oder - wie in dem Post auf stackoverflow beschrieben - jedes ; durch \; ersetzen.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

homer65 schrieb:

Oder - wie in dem Post auf stackoverflow beschrieben - jedes ; durch \; ersetzen.

Das ist aber ein blöder Ansatz, wenn der Bug wirklich in phpmyadmin ist, wie beschrieben. Die Syntax ist eigentlich falsch und nur für ein Programm angepasst. Wenn die das irgendwann reparieren, ist es wieder falsch - und man bemerkt es vielleicht nicht mal, weil man einfach alle Pakete aktualisert und dann den Bugfix bekommt.

Antworten |