<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Hier erfahren Sie, wie man zeigt, wie man es gibt PHP Verwendet in mysqli Erstellen Sie mehrere Datenbankverbindungen und prüfen Zeichensätze</span></span><span>
</span><span><span class="hljs-comment">// Beachten:Dieser Teil hat nichts mit dem Text zu tun,Zum Beispiel nur</span></span><span>
</span><span><span class="hljs-variable">$mysqli1</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"user1"</span></span><span>, </span><span><span class="hljs-string">"pass1"</span></span><span>, </span><span><span class="hljs-string">"db1"</span></span><span>);
</span><span><span class="hljs-variable">$mysqli2</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"user2"</span></span><span>, </span><span><span class="hljs-string">"pass2"</span></span><span>, </span><span><span class="hljs-string">"db2"</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli1</span></span><span>->connect_error || </span><span><span class="hljs-variable">$mysqli2</span></span><span>->connect_error) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Die Datenbankverbindung ist fehlgeschlagen"</span></span><span>);
}
</span><span><span class="hljs-comment">// Drucken Sie den Charakter -Set -Namen von zwei verbundenen Anschlüssen aus</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"verbinden1Zeichensatz:"</span></span><span> . </span><span><span class="hljs-variable">$mysqli1</span></span><span>-></span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>() . PHP_EOL;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"verbinden2Zeichensatz:"</span></span><span> . </span><span><span class="hljs-variable">$mysqli2</span></span><span>-></span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>() . PHP_EOL;
</span><span><span class="hljs-meta">?></span></span><span>
---
</span><span><span class="hljs-comment"># existieren多个数据库verbinden下如何使用 mysqli::character_set_name 确保Zeichensatz一致?</span></span><span>
existieren PHP von Web In der Entwicklung,我们经常会同时verbinden多个数据库。Zum Beispiel,Eine Datenbank speichert Benutzerdaten,Eine andere Datenbank wird für Protokolle oder Berichte verwendet。existieren这种情况下,如果不同von数据库verbinden使用了不一致vonZeichensatz,Dies kann dazu führen, dass der Codes aufbewahrt und gelesen wird.、Abnormale oder sogar Sicherheitsrisiken。daher,Angemessene Verwendung **`mysqli::</span><span><span class="hljs-variable constant_">character_set_name</span></span><span>`** 来检测并统一Zeichensatz,是保障系统稳定性von重要一环。
</span><span><span class="hljs-comment">## 1. `mysqli::character_set_name` von作用 </span></span><span>
`mysqli::</span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>()` 方法用于返回当前verbinden所使用vonZeichensatz名称。它不会改变Zeichensatz,Geben Sie einfach einen Kontrollpunkt an。Davon,我们可以existieren运行时确认数据库verbindenvonZeichensatz是否符合预期。
Beispiel:
```php
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"user"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"dbname"</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>(); </span><span><span class="hljs-comment">// Zum Beispiel:utf8mb4</span></span><span>
</span></span>
In den tatsächlichen Projekten sind gemeinsame Probleme:
Datenbank A verwendet UTF8MB4 und Datenbank B standardmäßig nach Latin1 ;
Der Charaktersatz ist während des Einsetzens nicht explizit spezifiziert, was zu verstümmelten Code in Cross-Store-Daten führt.
Gemischte Zeichensätze verschiedener Verbindungen, die Ausnahmen im Vergleich und Sortieren werfen.
Diese verborgenen Gefahren können vermieden werden, indem der Zeichen unmittelbar nach der Erstellung jeder Verbindung überprüft wird.
Geben Sie bei der Verbindung einen Zeichensatz an
<span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"user"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"dbname"</span></span><span>);
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">set_charset</span></span><span>(</span><span><span class="hljs-string">"utf8mb4"</span></span><span>);
</span></span>
Dies stellt sicher, dass die Verbindung immer das von uns benötigte Zeichensatz verwendet.
Bestätigen Sie mit Charakter_Set_Name während der Überprüfung
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>() !== </span><span><span class="hljs-string">"utf8mb4"</span></span><span>) {
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">set_charset</span></span><span>(</span><span><span class="hljs-string">"utf8mb4"</span></span><span>);
}
</span></span>
Dies stellt sicher, dass die Anwendungsschicht auch dann einheitlich bleibt, auch wenn die Serverkonfiguration unterschiedlich ist.
Einheitliche Überprüfung mehrerer Verbindungen
<span><span><span class="hljs-variable">$connections</span></span><span> = [</span><span><span class="hljs-variable">$mysqli1</span></span><span>, </span><span><span class="hljs-variable">$mysqli2</span></span><span>];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$connections</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$conn</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$conn</span></span><span>-></span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>() !== </span><span><span class="hljs-string">"utf8mb4"</span></span><span>) {
</span><span><span class="hljs-variable">$conn</span></span><span>-></span><span><span class="hljs-title function_ invoke__">set_charset</span></span><span>(</span><span><span class="hljs-string">"utf8mb4"</span></span><span>);
}
}
</span></span>
Kraft geben einen Zeichensatz an : Anruf set_charset unmittelbar nach einer Verbindung, anstatt sich auf die Standardeinstellungen des Datenbankservers zu verlassen.
Überwachung und Protokollierung : In einer Entwicklungs- oder Testumgebung kann die Protokollierung durch den Rückgabewert von Charakter_Set_Name erfolgen, um sicherzustellen, dass die Umgebung konsistent ist.
Teamvereinbarung : In Multi-Database-Projekten wird ein einheitlicher Charakter-Standard-Standard eindeutig vereinbart (normalerweise empfohlen UTF8MB4 ), um potenzielle Probleme zu verringern.
In mehreren Datenbankverbindungsszenarien bietet MySQLI :: Zeichen_Set_Name eine bequeme Möglichkeit, den Zeichensatz der aktuell verbundenen Angeschlossenen zu überprüfen. In Verbindung mit der Verwendung von set_Charset kann es effektiv sicherstellen, dass die Charakterkonsistenz in den Operationen des Verzugsbranchens effektiv ist, wodurch verstümmelte Code- und Kompatibilitätsprobleme vermieden werden. Dies ist ein Detail, das in Systemen mit mehreren Store nicht ignoriert werden kann, und es ist auch ein wichtiger Schritt, um die Datengenauigkeit und die Anwendungsstabilität sicherzustellen.
<span></span>
Verwandte Tags:
mysqli