Heim  >  Artikel  >  php教程  >  PHP MySQL erweiterte SQL-Abfrage-Lösung für chinesische Feldnamen

PHP MySQL erweiterte SQL-Abfrage-Lösung für chinesische Feldnamen

高洛峰
高洛峰Original
2016-12-01 14:52:012127Durchsuche

1. Frage:

Die Daten einer Tabelle in SQLServer2000 müssen in MySQL5 importiert werden (es wird dringend empfohlen, dies nicht zu tun). um Chinesisch als Feldnamen zu verwenden). Tatsächlich besteht der Vorgang darin, die Datensätze auf SQL Server abzufragen und in MySQL einzufügen. Die gewählte Skriptsprache ist PHP. PHP öffnet MSSQL- und MySQL-Erweiterungen und erleichtert so den Betrieb beider Datenbanken.
Das Problem besteht darin, dass die Feldnamen der Tabelle in SQLServer auf Chinesisch sind. Wenn die geschriebene Abfrageanweisung in SQLServe getestet wird, werden Datensätze zurückgegeben, und bei Verwendung der erweiterten MSSQL-Abfrage von PHP wird ein Fehler gemeldet.
Ich habe die Informationen im Internet überprüft und festgestellt, dass es online nicht viele relevante Informationen gibt. Viele Internetnutzer glauben, dass die MSSQL-Erweiterung von PHP chinesische Zeichen in SQL-Anweisungen nicht unterstützt. Nach Überprüfung der Informationen unterstützt PHPs MSSQL chinesische Anweisungen in SQL. Die meisten Probleme bei der Fehlerberichterstattung sind auf Codierungsprobleme zurückzuführen. Die Codierung der Datenbank und die Codierung stimmen nicht mit der Codierung der Abfrageanweisung überein. Der chinesische Teil der Abfrageanweisung in SQL Server wird verstümmelt, was dazu führt, dass die Abfrage fehlschlägt.

2. Lösung:

Nachdem wir den Grund kennen, werden wir ihn analysieren und lösen und bestätigen, dass es sich um ein Problem inkonsistenter Codierung handelt. Die Lösung ist in die folgenden Schritte unterteilt:
1. Bestätigen Sie die Kodierung der SQLServer-Datenbank. Meine Datenkodierung ist GBK.
2. Bestätigen Sie die Kodierung der aktuellen PHP-Skriptdatei. Meine Kodierung ist UTF-8.
3. Konvertieren Sie die Codierung von SQL-Abfrageanweisungen.
Ergänzung: Einige Internetnutzer haben erwähnt, dass sie die Kodierung von PHP-Skriptdateien konvertieren müssen, um mit der Kodierung der Datenbank übereinzustimmen. Stellen Sie lediglich sicher, dass Ihre SQL-Anweisung mit der Kodierung übereinstimmt Es wird empfohlen, dass Sie keine Konvertierung durchführen müssen. Der Grund dafür ist, dass Sie auch die Kodierung aller PHP-Skriptdateien konvertieren müssen ist nicht einheitlich und es ist leicht, Fehler zu machen, wenn es viele miteinander verbundene Dateien gibt, ist dies ebenfalls eine sehr problematische Frage und kompliziert die Sache.

Dritter Plan:

Schreiben Sie eine Konvertierungsfunktion, um die SQL-Anweisungscodierung zu konvertieren, bevor Sie SQL ausführen. Mein Beispielcode ist unten gepostet:
Code kopieren Der Code lautet wie folgt:
//Codierungskonvertierungsfunktion
function utf8togb($s) {
return iconv('utf-8', 'gbk // IGNORE', $s); // Der IGNORE-Parameter wird ignoriert, wenn auf Zeichen gestoßen wird, die nicht konvertiert werden können
}
//Es wird empfohlen, alle chinesischen Felder durch englische Aliase zu ersetzen, um die folgenden Vorgänge und die Codierung zu erleichtern Konvertierung und andere Probleme
$sql="SELECT [id], [column] as typeid, [topic] as title, [author] as author, convert(text, [text]) as body FROM [article table]; ";
$ sql = utf8togb($sql);

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn