PHP mssql 拡張 SQL クエリ中国語フィールド名ソリューション

WBOY
リリース: 2016-06-13 11:57:44
オリジナル
848 人が閲覧しました

1. 質問:

データベースは MS SQLServer2000 です。SQLServer2000 のテーブルのデータを MySQL5 にインポートする必要があります。SQLServer2000 テーブルのフィールド名は簡体字中国語です。中国語で実行しないことを強くお勧めします)。実際、この操作は SQL Server 上のレコードをクエリし、それらを MySQL に挿入することです。選択されたスクリプト言語は PHP です。PHP は MSSQL と MySQL の拡張機能を提供し、両方のデータベースの操作を容易にします。
SQLServer のテーブルのフィールド名が中国語であるという問題が発生し、作成されたクエリ ステートメントを SQLServe でテストするとレコードが返され、PHP の MSSQL 拡張クエリを使用するとエラーが報告されます。
インターネット上の情報を調べましたが、多くのネットユーザーは、PHP の MSSQL 拡張機能は SQL ステートメント内の漢字をサポートしていないと考えています。情報を確認すると、PHP の MSSQL は SQL 内の中国語ステートメントをサポートしています。エラー報告の問題のほとんどは、エンコードの問題が原因で発生します。エンコード データベースとエンコードが、SQL Server のクエリ ステートメントの中国語部分が文字化けし、クエリが失敗します。

2. 解決策:

原因がわかったら、分析して解決し、不整合なコーディングの問題であることを確認します。解決策は次の手順に分かれています。
1. SQLServer データベースのエンコーディングが GBK であることを確認します。
2. 現在の PHP スクリプト ファイルのエンコードが UTF-8 であることを確認します。
3. SQL クエリ ステートメントのエンコーディングを変換します。
補足: 一部のネチズンは、データベースのエンコーディングと一致するように PHP スクリプト ファイルのエンコーディングを変換する必要があると述べています。実際には、この手順は必要ありません。SQL ステートメントがエンコーディングと一致していることを確認してください。その理由は、PHP スクリプト ファイルに他の PHP スクリプトが含まれている場合は、すべてのインクルード スクリプト ファイルまたは require スクリプト ファイルのエンコーディングも変換する必要があるためです。相互に関連するファイルが多数ある場合、これも非常に面倒で、問題が複雑になります。

3 番目の計画:

SQL を操作する前に SQL ステートメントのエンコーディングを変換する変換関数を作成します。私のサンプルコードは以下に掲載されています:

コードをコピー コードは次のとおりです:


//エンコード変換関数
function utf8togb ($s) {
return iconv('utf-8', 'gbk//IGNORE', $s); // 変換できない文字が見つかった場合、IGNORE パラメータは無視されます
}
// 以下の操作やコーディング変換、その他の問題を容易にするために、すべての中国語フィールドを英語のエイリアスに置き換えることをお勧めします
$sql="SELECT [id], [column] as typeid, [title] as title, [ author] を著者として、convert (text, [text]) を本文として FROM [記事テーブル];";
$sql = utf8togb($sql);

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート