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
Moores Gesetz gilt nicht mehr Seit der Übernahme ...
Inhaltsverzeichnis 1. Grundlagen der Audiowiederg...
Inhaltsverzeichnis Vorwort 1. Ermitteln Sie die L...
Einführung Linux ist ein System, das automatisch ...
Hintergrund Wenn wir uns über den MySQL-Client in...
Ergebnis:Implementierungscode: html <link href...
Lassen Sie uns ohne weitere Umschweife den Screen...
Das Hinzufügen der richtigen VS Code-Erweiterung ...
Ich habe gerade einen von JunChen verfassten Beitr...
1. Stoppen Sie den MySQL-Dienst in der Befehlszei...
Oder schreiben Sie den Installationsvorgang selbs...
Vor Kurzem hat das Projekt die Umgebung gewechsel...
Mir sind mehrere Möglichkeiten bekannt, die Ankerp...
Herunterladen https://tomcat.apache.org/download-...
Der spezifische Code für JavaScript zur Implement...