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

Detailliertes Tutorial zur Installation von MySQL 5.7.26 auf CentOS7.4

In CentOS ist standardmäßig MariaDB installiert, ...

Der Quellcode zeigt, warum Vue2 Daten und Methoden direkt abrufen kann

Inhaltsverzeichnis 1. Beispiel: Hiermit können Da...

JavaScript-Canvas zum Erzielen eines Spiegelbildeffekts

In diesem Artikel wird der spezifische Code für J...

Reine CSS-Implementierung eines Radio- und Checkbox-Effektbeispiels

Radio und Kontrollkästchen Reines CSS zum Erziele...

Detaillierte Erläuterung der MySQL-Existes- und Not-Existes-Beispiele

Detaillierte Erläuterung der MySQL-Existes- und N...

WML-Tag-Zusammenfassung

Strukturbezogene Tags ----------------------------...

Testfragen und Referenzantworten zum Thema Webdesign und Produktion

<br />Test zu Webdesign und -produktion, Tei...

Detaillierte Erklärung der MySQL 30-Militärregeln

1. Grundlegende Spezifikationen (1) Es muss die I...

Warum wird in MySQL keine UTF-8-Kodierung verwendet?

MySQL UTF-8-Kodierung MySQL unterstützt UTF-8 sei...