12
我目前遇到一個奇怪的錯誤。如何使用PDO將二進制數據插入MSSQL
的設置: MSSQL Server 2012的快與的LocalDB 目標表排序規則是:SQL_Latin1_General_CP1_CI_AS
PHP 5.3.9一個Zend服務器5.6 mcrypt的與MCRYPT_RIJNDAEL_256和MCRYPT_MODE_ECB
崇高文本2默認情況下,編碼(我讀它是UTF8 BOM)
我使用PDO與MSSQL服務器的官方MS適配器。除了一件事情之外,一切正常: 由於密碼,我無法在管理員表中寫入一行。
讓我們來看看我的加密的口令:
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)"
我用準備好的發言和bindParam
函數沒有額外的選項來執行我的SQL語句。
如果有人有一個想法,如何解決請讓我知道。任何幫助表示讚賞!
不確定關於MS SQL,但必須有一種方法來聲明二進制列,即沒有編碼或排序規則。 –
@Jack,感謝您的評論。之後,我嘗試了二進制和varbinary列,但那些也不起作用。 – Richard
好的,有沒有辦法將參數綁定爲PDO中的二進制文件? –