gpt4 book ai didi

php - 如何使用 PDO 将二进制数据插入 MSSQL

转载 作者:行者123 更新时间:2023-12-02 04:27:15 26 4
gpt4 key购买 nike

我目前遇到一个奇怪的错误。

设置:带有 localdb 的 MSSQL Server 2012 Express目标表排序规则为:SQL_Latin1_General_CP1_CI_AS

Zend Server 5.6 上的 PHP 5.3.9MCrypt 与 MCRYPT_RIJNDAEL_256 和 MCRYPT_MODE_ECB

Sublime Text 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 语句,没有额外的选项。

如果有人有想法,如何解决这个问题,请告诉我。感谢任何形式的帮助!

最佳答案

您应该将排序规则更改为 utf8_unicode_ci 之类的内容来处理这几个无人看管的字符。

你也应该尝试这样的事情:

$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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11263034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com