大佬教程收集整理的这篇文章主要介绍了php – 如何使用PDO将二进制数据插入到MSSQL中,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
设置:
带有localdb的MSsql Server 2012 Express
目标表归类为:sql_latin1_General_CP1_CI_AS
Zend Server 5.6中的PHP 5.3.9@H_377_2@mCrypt与MCRYPT_RIJNDAEL_256和MCRYPT_MODE_ECB
Sublime Text 2的默认编码(我读的是UTF8 BOM)
我正在使用PDO与MSsql服务器的官方MS适配器.一切都有效:
由于密码,我无法在管理员表中写入一行.
让我们看看我的ENCRYPTED密码:
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)"
还应该尝试这样的:
$db = new PDO('foo','bar','blo'); $stmt = $db->prepare("SELEct foo,bar from table where id=?"); $stmt->execute(array($_GET['id'])); $stmt->bindcolumn(1,$type,PDO::PARAM_STR,256); $stmt->bindcolumn(2,$lob,PDO::PARAM_LOB); $stmt->fetch(PDO::FETCH_BOUND); header("Content-Type: $type"); fpassthru($lob);
要检查类型(这是错误/错误开始发生的地方),请执行此检查,甚至可能代替我上面的示例的最后一行:
if (is_String($lob)) echo $lob; else fpassthru($lob);
以上是大佬教程为你收集整理的php – 如何使用PDO将二进制数据插入到MSSQL中全部内容,希望文章能够帮你解决php – 如何使用PDO将二进制数据插入到MSSQL中所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。