Wie füge ich einen Wert in MySQL ein, der aus einfachen oder doppelten Anführungszeichen besteht? dh
This is Ashok's Pen.
Das einfache Anführungszeichen führt zu Problemen. Möglicherweise gibt es andere Escape-Zeichen.
Wie füge ich die Daten richtig ein?
Antworten:
Ganz einfach gesagt:
SELECT 'This is Ashok''s Pen.';
Ersetzen Sie also innerhalb der Zeichenfolge jedes einzelne Anführungszeichen durch zwei davon.
Oder:
SELECT 'This is Ashok\'s Pen.'
Escape it =)
quelle
'ist der Fluchtcharakter. Ihre Zeichenfolge sollte also sein:
Wenn Sie einen Front-End-Code verwenden, müssen Sie eine Zeichenfolge ersetzen, bevor Sie die Daten an die gespeicherte Prozedur senden.
In C # können Sie dies beispielsweise tun
und übergeben Sie dann den Wert an die gespeicherte Prozedur.
quelle
''
(zwei einfache Anführungszeichen) ist eine spezielle Alternative, mit der Sie einem einfachen Anführungszeichen "entkommen" können.Siehe meine Antwort auf "So entkommen Sie Zeichen in MySQL"
Unabhängig davon, in welcher Bibliothek Sie mit MySQL kommunizieren, ist eine Escape- Funktion integriert. In PHP können Sie beispielsweise mysqli_real_escape_string oder verwenden PDO :: quote verwenden
quelle
This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used.
.Wenn Sie vorbereitete Anweisungen verwenden, behandelt der Treiber alle Escapezeichen. Zum Beispiel (Java):
quelle
Verwenden Sie diesen Code:
Dies löst Ihr Problem, da die Datenbank die Sonderzeichen einer Zeichenfolge nicht erkennen kann.
quelle
This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used.
.Es gibt einen anderen Weg, dies zu tun, der je nach Ihrer Perspektive sicherer sein kann oder nicht. Es erfordert MySQL 5.6 oder höher, da eine bestimmte Zeichenfolgenfunktion verwendet wird :
FROM_BASE64
.Angenommen, Sie haben diese Nachricht, die Sie einfügen möchten:
Dieses Zitat enthält eine Reihe von einfachen und doppelten Anführungszeichen und wäre ein echtes Problem beim Einfügen in MySQL. Wenn Sie das aus einem Programm einfügen, ist es einfach, die Anführungszeichen usw. zu umgehen. Wenn Sie dies jedoch in ein SQL-Skript einfügen müssen, müssen Sie den Text bearbeiten (um die Anführungszeichen zu umgehen), was fehleranfällig sein kann oder empfindlich gegenüber Zeilenumbrüchen usw.
Stattdessen können Sie den Text Base64-codieren, sodass Sie eine "saubere" Zeichenfolge haben:
SWtGb0xDSWdUbVZoY214NUlFaGxZV1JzWlhOeklFNXBZMnNnZD JGMlpXUWdZVzRnWld4bFoyRnVkQ0JvWVc1a0xDQWlZU0J0WVhS MFpYCklnYjJZZ2JtOGdhVzF3YjNKMFlXNWpaUzRnTGlBdUlDNG dTWFFuY3lCdWIzUWdZWE1nZEdodmRXZG9JRWtnY21WaGJHeDVJ SGRoYm5SbApaQ0IwYnlCcWIybHVMaUF1SUM0Z0xpQlVhRzkxWj JoMElFa25aQ0JoY0hCc2VTd2dZblYwSUdGd2NHRnlaVzUwYkhr Z1NTQW5aRzl1SjMKUWdablZzWm1sc2JDQnlaWEYxYVhKbGJXVn VkSE1uSUMwaUlBPT0K
Einige Hinweise zur Base64-Codierung:
base64
MySQL sich über die Zeichenkodierung einig ist (ich empfehle UTF-8).Um dies in MySQL zu laden:
INSERT INTO my_table (text) VALUES (FROM_BASE64(' SWtGb0xDSWdUbVZoY214NUlFaGxZV1JzWlhOeklFNXBZMnNnZD JGMlpXUWdZVzRnWld4bFoyRnVkQ0JvWVc1a0xDQWlZU0J0WVhS MFpYCklnYjJZZ2JtOGdhVzF3YjNKMFlXNWpaUzRnTGlBdUlDNG dTWFFuY3lCdWIzUWdZWE1nZEdodmRXZG9JRWtnY21WaGJHeDVJ SGRoYm5SbApaQ0IwYnlCcWIybHVMaUF1SUM0Z0xpQlVhRzkxWj JoMElFa25aQ0JoY0hCc2VTd2dZblYwSUdGd2NHRnlaVzUwYkhr Z1NTQW5aRzl1SjMKUWdablZzWm1sc2JDQnlaWEYxYVhKbGJXVn VkSE1uSUMwaUlBPT0K '));
Dies wird ohne Beschwerden eingefügt, und Sie mussten keinen Text innerhalb der Zeichenfolge manuell maskieren.
quelle
Sie sollten den Sonderzeichen mit dem
\
Zeichen entkommen .Wird:
quelle
Wenn Sie (') Apostroph in der Datenbank behalten möchten, verwenden Sie diesen Code
$ new_value kann in der Datenbank gespeichert werden.
quelle
Sie können diesen Code verwenden,
wenn mysqli_real_escape_string () nicht funktioniert.
quelle
Verwenden Sie in PHP mysqli_real_escape_string .
Beispiel aus dem PHP-Handbuch:
quelle
quelle
Wenn Sie PHP verwenden, verwenden Sie einfach die Funktion addslashes ().
PHP Manual fügt Schrägstriche hinzu
quelle
Für den programmgesteuerten Zugriff können Sie Platzhalter verwenden , um unsichere Zeichen automatisch für Sie zu maskieren.
In Perl DBI können Sie beispielsweise Folgendes verwenden:
quelle
Verwenden Sie entweder addslahes () oder mysql_real_escape_string ().
quelle
This, mysql_real_escape_string() extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used.
.So wie ich es mache, indem ich Delphi benutze:
TheString zur "Flucht":
Lösung:
Ergebnis:
Diese Funktion ersetzt alle Zeichen (39) durch "\ '", sodass Sie problemlos Textfelder in MySQL einfügen oder aktualisieren können.
Ähnliche Funktionen gibt es in allen Programmiersprachen!
quelle
Vielleicht können Sie sich die Funktion
QUOTE
im MySQL-Handbuch ansehen .quelle