So fügen Sie einen Wert mit einfachen Anführungszeichen oder Backslashes in MySQL-Anweisungen ein

So fügen Sie einen Wert mit einfachen Anführungszeichen oder Backslashes in MySQL-Anweisungen ein

Vorwort

Dieser Artikel stellt hauptsächlich den relevanten Inhalt zum Einfügen von Werten mit einfachen Anführungszeichen oder Backslashs in MySQL-Anweisungen vor. Werfen wir einen Blick auf die ausführliche Einführung.

Beispielsweise gibt es eine Tabelle, deren Struktur wie folgt ist

CREATE TABLE `Aktivität` (
 `id` int(11) NICHT NULL AUTO_INCREMENT KOMMENTAR 'ID',
 `title` varchar(255) NOT NULL COMMENT 'Aktivitätstitel',
 PRIMÄRSCHLÜSSEL (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Aktivitätstabelle';

Um beispielsweise einen Datensatz dort einzufügen, lautet der Beispielcode wie folgt:

$servername = "xxxxservername";
$port = 3306;
$Benutzername = "xxxBenutzername";
$passwort = "xxxpwd";
$dbname = "xxxxxxdb";

// Verbindung erstellen $conn = new mysqli($servername, $username, $password, $dbname, 8306);

// Verbindung prüfen if ($conn->connect_error) {
 die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}

$item['title'] = 'Frohes neues Jahr!';
$sql = sprintf("INSERT INTO Aktivität (Titel) Werte ( '%s');", $item['Titel']);
var_dump($sql);
wenn ($conn->query($sql) === TRUE) {
	echo "Einfügen erfolgreich\n";
} anders {
 echo "Einfügen fehlgeschlagen:" . $conn->error;
}

$conn->schließen();

Dieser Code wird ordnungsgemäß ausgeführt, kein Problem. Wenn der Titel im Code jedoch „Happy Valentine's Day!“ lautet, wird der folgende Fehler gemeldet, der darauf hinweist, dass ein Syntaxfehler vorliegt:

Einfügen fehlgeschlagen: Ihre SQL-Syntax weist einen Fehler auf. Überprüfen Sie im Handbuch zu Ihrer MySQL-Serverversion, welche Syntax in der Nähe von „day!“) in der Zeile „..“ zu verwenden ist.

Weil die einfachen Anführungszeichen in der SQL-Anweisung INSERT INTO activity (title) VALUES ( 'happy valentine's day!'); nicht gepaart sind.

Manchmal fügen wir benutzerdefinierte Daten in die Datenbank ein und die oben beschriebene Situation tritt wahrscheinlich ein. Wie können wir das also vermeiden?

Sie müssen die Sonderzeichen in SQL maskieren. Sie können die $sql-Codezeile wie folgt ändern:

$sql = sprintf("INSERT INTO Aktivität (Titel) Werte ('%s');", mysqli_real_escape_string($conn, $item['title']));

Der gesamte SQL-String sieht tatsächlich so aus:

INSERT INTO Aktivität (Titel) VALUES ( 'Schönen Valentinstag!');"

Manchmal gibt es ein Problem: Nach json_encode werden die darin enthaltenen chinesischen Zeichen in Unicode-Code konvertiert, und beim Einfügen in MySQL wird festgestellt, dass \ verbraucht ist.

Beispielsweise lautet der Unicode-Code der beiden chinesischen Schriftzeichen \u4e2d\u6587, aber manchmal wird beim Einfügen in die Datenbank der Backslash aufgefressen und wird zu u4e2du6587

Siehe den folgenden Beispielcode:

$item['Titel'] = json_encode([
  'balbalbla' => 'Chinesisch'
]);
$sql = sprintf("INSERT INTO Aktivität (Titel) Werte ( '%s');", $item['Titel']);

Der gesamte SQL-String sieht tatsächlich so aus:

INSERT INTO Aktivität (Titel) VALUES ( '{"balbalbla":"\u4e2d\u6587"}');

Beim Einfügen in die Datenbank wird der Wert des Titelfelds zu {"balbalbla":"u4e2du6587"} .

Das liegt daran, dass das \ hier als Escape-Zeichen verwendet wird. Tatsächlich muss der Unicode-Code \ erneut maskiert werden, damit er korrekt in die Datenbank eingefügt werden kann.

$item['Titel'] = json_encode([
  'balbalbla' => 'Chinesisch'
]);
$sql = sprintf("INSERT INTO Aktivität (Titel) Werte ('%s');", mysqli_real_escape_string($conn, $item['title']));

Der gesamte SQL-String sieht tatsächlich so aus:

INSERT INTO Aktivität (Titel) VALUES ( '{\"balbalbla\":\"\\u4e2d\\u6587\"}');

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Probleme bei der Verwendung mehrerer einfacher und dreifacher Anführungszeichen in MySQL concat
  • Eine detaillierte Analyse des Mordes, der durch ein falsch platziertes Anführungszeichen in MySQL verursacht wurde
  • Über Mysql-Abfragen mit einfachen Anführungszeichen und das Einfügen von Zeichenfolgen mit einfachen Anführungszeichen
  • Analyse von MySQL-Leistungsproblemen, die durch ein einzelnes Anführungszeichen verursacht werden
  • Detaillierte Erklärung des Unterschieds und der Verwendung von Anführungszeichen und Backticks in MySQL

<<:  Detaillierte Schritte zum Ändern des Standardkennworts bei der Installation von MySQL in Ubuntu

>>:  So kapseln Sie Axios einfach in Vue

Artikel empfehlen

Zusammenfassung der Dockerfile-Maven-Plugin-Nutzungsanleitung

Inhaltsverzeichnis POM-Konfiguration Setting.xml-...

Lösung für leere Seite nach Vue-Verpackung

1. Lösung für das Problem, dass die Seite leer is...

Über die Position des H1-Tags in XHTML

In letzter Zeit wurde viel über H1 diskutiert (auf...

Methode zum Erstellen eines Redis-Clusters basierend auf Docker

Laden Sie das Redis-Image herunter Docker-Pull yy...

Lösung für Tomcat zum externen Speichern von Konfigurationsdateien

Frage Wenn wir bei der normalen Entwicklung das P...

JavaScript-Wissen: Konstruktoren sind auch Funktionen

Inhaltsverzeichnis 1. Definition und Aufruf des K...

So erstellen Sie ein Drag & Drop-Plugin mit benutzerdefinierten Vue-Direktiven

Wir alle kennen die Drag-and-Drop-Funktion von HT...

Kurze Analyse von CentOS 7 mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar

Baidu Cloud-Festplatte: Link: https://pan.baidu.c...