現在、私は奇妙なエラーが発生しています。PDOを使用してMSSQLにバイナリデータを挿入する方法
セットアップ:localdb と MSSQL Server 2012のExpressのターゲットテーブルの照合順序は次のとおりです。順序SQL_Latin1_General_CP1_CI_AS
PHP 5.3.9
のZend Serverの5.6 MCRYPT_RIJNDAEL_256とmcryptのとMCRYPT_MODE_ECBの崇高テキスト2デフォルトエンコーディング(私はUTF8 BOMを読んでいます)
私はMSSQLサーバ用の公式のMSアダプタでPDOを使用しています。 1つのこと以外はすべて正常に動作します。 パスワードのために管理者テーブルに行を書き込むことができません。
y"ûƒ^äjw¾bðúl5êù-Ö=W¿Š±¬GP¥Œy÷&ø
これはPDOトレースです::
Array
(
[0] => IMSSP
[1] => -7
[2] => An error occurred translating string for input param 3 to UCS-2: No mapping for the Unicode character exists in the target multi-byte code page.
)
SQL: [120] INSERT INTO administrator ([username], [email], [password], [section]) VALUES(:username, :email, :password, :section)
Params: 4
Key: Name: [9] :username
paramno=0
name=[9] ":username"
is_param=1
param_type=2
Key: Name: [6] :email
paramno=1
name=[6] ":email"
is_param=1
param_type=2
Key: Name: [9] :password
paramno=2
name=[9] ":password"
is_param=1
param_type=2
Key: Name: [8] :section
paramno=3
name=[8] ":section"
is_param=1
param_type=2
私は私のMSSQL管理センターを使用して、私はまったく同じSQLと私の行を挿入することができます
は私の暗号化されたパスワードを見ていることができますクエリ。 列の設定が結構です、私は考えます:
["id"]=>
string(3) "int"
["username"]=>
string(12) "nvarchar(45)"
["email"]=>
string(12) "nvarchar(45)"
["password"]=>
string(12) "varbinary(45)"
["section"]=>
string(11) "nvarchar(7)"
["country_code"]=>
string(11) "nvarchar(2)"
は私が準備されたステートメントと私のSQL文を実行するための追加のないオプションを持つbindParam
関数を使用します。
誰かがアイデアを持っている場合は、解決方法を私に教えてください。何かの助けをいただければ幸いです!
ms sqlについてはわかりませんが、バイナリ列を宣言する方法、つまりエンコードまたは照合が必要です。 –
@Jack、コメントありがとう。その後、私はbinaryとvarbinaryの列を試しましたが、それらはどちらも動作しません。 – Richard
さて、おそらくPDOのバイナリとしてパラメータをバインドする方法はありますか? –