0
私はSQL Serverを初めて使用しています。私は自分のプロジェクトにPHP 7、Yii2を使用します。SQL Serverの列名にロシア語の文字の代わりに疑問符が含まれています
現在のDBの構成は次のとおりです。
'class' => 'yii\db\Connection',
'dsn' =>
'sqlsrv:Server=172.16.30.22,1433;Database=DEV_PM_TOOLS;ConnectionPooling=0',
'charset' => 'utf8',
私が間違ってエンコードして、私のクエリは疑問符の代わりにロシア語の文字([ПТО0004]
列を返し、ピボットテーブルを作成します(列名に個別の行の値を変換)しようとします。 )。そして、例外メッセージはMalformed UTF-8 characters, possibly incorrectly encoded.
です:
0 => [
'ItemKey' => '990'
'ItemNo' => 'BO 3397118991'
'CompanyKey' => '15'
'Description' => 'Щітка склоочисника'
'SearchDescription' => 'К-Т БЕСКАРКАСНЫЙ AEROTWIN 650/600 MM A991S RETROOFIT'
'TopCode' => 'C'
'ResponsibleBrandAnalyst' => 'EES0947'
'ResponsibleBrandManager' => 'EES0947'
'Grp' => 'СТЕКЛООЧИСТИТЕЛЬ'
'SubGrp' => 'ЩЕТКИ СТЕКЛООЧЕСТИТЕЛЯ'
'Brand' => 'BOSCH'
'V00214' => null
'���0004' => '14.2953'
'PrimeCost' => '14.8400'
'UnitPriceD3' => '16.516300'
'AnnualSalesQuantityBase' => '63.0000'
'AnnualSalesAmountIncludingVAT_LCY' => '1061.6900'
'AnnualAmountPrimeCostLCY' => '934.9200'
'Margin' => '126.7700'
'CntWeekSale' => '33'
'Trend' => '.9040'
'NormTotal' => '36.0000'
'NormOfAnalyst' => '8.0000'
'UoM' => 'К-Т'
'UnitsPerParcel' => '1.00000000000000000000'
'OptimumMultipleness' => '1.00000000000000000000'
'QtyPerCar' => '1'
'FirstDate' => '2009-03-31'
'LastDate' => '2017-04-26'
'Unmarketable' => '0'
'Discontinued' => '0'
'BlockPurchase' => '0'
'MinReservK1' => '2'
'MinReservK2' => '2'
'OnWay' => '0'
'OrderQty' => '0'
'Backorder' => '0'
'Comment' => ''
'Stock' => '23.0000'
]
私はMS SQL Management Studioでクエリを実行するとただし、列名が正しくレンダリングされます。
クエリ:誤って符号化における
SELECT
[ItemKey]
,[ItemNo]
,[CompanyKey]
,[Description]
,[SearchDescription]
,[TopCode]
,[ResponsibleBrandAnalyst]
,[ResponsibleBrandManager]
,[Grp]
,[SubGrp]
,[Brand]
,[V00214] , [ПТО0004]
,[PrimeCost]
,[UnitPriceD3]
,[AnnualSalesQuantityBase]
,[AnnualSalesAmountIncludingVAT_LCY]
,[AnnualAmountPrimeCostLCY]
,[Margin]
,[CntWeekSale]
,[Trend]
,[NormTotal]
,[NormOfAnalyst]
,[UoM]
,[UnitsPerParcel]
,[OptimumMultipleness]
,[QtyPerCar]
,[FirstDate]
,[LastDate]
,[Unmarketable]
,[Discontinued]
,[BlockPurchase]
,[MinReservK1]
,[MinReservK2]
,[OnWay]
,[OrderQty]
,[Backorder]
,[Comment]
,[Stock]
FROM
(
SELECT [ItemKey]
,i.[ItemNo]
,i.[CompanyKey]
,[Description]
,[SearchDescription]
,[TopCode]
,i.[ResponsibleBrandAnalyst]
,i.[ResponsibleBrandManager]
,[Grp]
,[SubGrp]
,[Brand]
,[p].[VendorNo]
,[PrimeCost]
,[UnitPriceD3]
,[DirectBaseUnitCostEUR]
,[AnnualSalesQuantityBase]
,[AnnualSalesAmountIncludingVAT_LCY]
,[AnnualAmountPrimeCostLCY]
,[Margin]
,[CntWeekSale]
,[Trend]
,[NormTotal]
,[NormOfAnalyst]
,[UoM]
,[UnitsPerParcel]
,[OptimumMultipleness]
,[QtyPerCar]
,[FirstDate]
,[LastDate]
,[Unmarketable]
,[Discontinued]
,[BlockPurchase]
,[MinReservK1]
,[MinReservK2]
,[OnWay]
,[OrderQty]
,[Backorder]
,[Comment]
,[Stock]
FROM [PM_Item] [i]
INNER JOIN [PurchPrice] [p] ON p.ItemNo = i.ItemNo AND p.CompanyKey = i.CompanyKey
WHERE i.ResponsibleBrandAnalyst = 'EES0947' AND i.Brand = 'BOSCH'
) AS SourceTable
PIVOT
(
MAX([SourceTable].[DirectBaseUnitCostEUR])
FOR [SourceTable].[VendorNo] IN ([V00214], [ПТО0004])
) AS PivotTable
[ПТО0004]
カラム。