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
Es gibt drei Seiten A, B und C. Seite A enthält Se...
In CentOS ist standardmäßig MariaDB installiert, ...
Ubuntu ist ein relativ beliebtes Linux-Desktopsys...
In diesem Artikel wird die Installations- und Kon...
Inhaltsverzeichnis 1. Betreiber 1.1 Arithmetische...
Aus SEO- und Sicherheitsgründen ist eine 301-Weit...
Inhaltsverzeichnis 1. Beispiel: Hiermit können Da...
In diesem Artikel wird der spezifische Code für J...
Radio und Kontrollkästchen Reines CSS zum Erziele...
Detaillierte Erläuterung der MySQL-Existes- und N...
Strukturbezogene Tags ----------------------------...
<br />Test zu Webdesign und -produktion, Tei...
1. Grundlegende Spezifikationen (1) Es muss die I...
MySQL UTF-8-Kodierung MySQL unterstützt UTF-8 sei...
Windows: Unterstützt NTFS, FAT Linux unterstützt ...