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:
Weil die einfachen Anführungszeichen in der SQL-Anweisung 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 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:
|
<<: Detaillierte Schritte zum Ändern des Standardkennworts bei der Installation von MySQL in Ubuntu
>>: So kapseln Sie Axios einfach in Vue
1. Installationsumgebung 1. HUAWEI Mate X CPU i5 ...
Die Kapselung und Verwendung der Vue-Komponente z...
Inhaltsverzeichnis POM-Konfiguration Setting.xml-...
1. Lösung für das Problem, dass die Seite leer is...
In letzter Zeit wurde viel über H1 diskutiert (auf...
Laden Sie das Redis-Image herunter Docker-Pull yy...
Vor kurzem habe ich in meinem Projekt vuethink ve...
Frage Wenn wir bei der normalen Entwicklung das P...
1. Problem Während der Entwicklung wird beim Einf...
Inhaltsverzeichnis 1. Definition und Aufruf des K...
Wir alle kennen die Drag-and-Drop-Funktion von HT...
Lange Zeit wurde die Entwicklung von Websites dad...
Inhaltsverzeichnis Komponenten zerlegen Linkes Fe...
1. Was ist Master-Slave-Replikation? Mithilfe der...
Baidu Cloud-Festplatte: Link: https://pan.baidu.c...