MSSQL, PHP将列从navchar更新为varbinary错误


MSSQL, PHP update Column to varbinary from navchar error

我有这个表列AgentsView (varbinary(max), null)

我试图用新的二进制更新该列,但我一直得到这个错误[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Implicit conversion from data type nvarchar(max) to varbinary(max) is not allowed. Use the CONVERT function to run this query.

我已经尝试了很多方法来绕过这个障碍。下面是生成相同错误消息

的几个尝试
update [dbo].[Agents] set [AgentsView] = 0x1EFBBBF3C587472615365726
update [dbo].[Agents] set [AgentsView] = '0x1EFBBBF3C587472615365726'
update [dbo].[Agents] set [AgentsView] = '1EFBBBF3C587472615365726'
update [dbo].[Agents] set [AgentsView] = Cast('1EFBBBF3C587472615365726' as varbinary(max))
update [dbo].[Agents] set [AgentsView] = Convert(varbinary(max), '1EFBBBF3C587472615365726')
update [dbo].[Agents] set [AgentsView] = Convert(varbinary(max), 0x1EFBBBF3C587472615365726)
update [dbo].[Agents] set [AgentsView] = Convert(varbinary(max), '0x1EFBBBF3C587472615365726')

我正在使用PHP,也尝试像这样转换变量

$newData = (binary) . "1EFBBBF3C587472615365726"

但是我不明白为什么我还是收到和以前一样的信息。

有什么建议吗?

我试过了:

创建表:

CREATE TABLE [dbo].[Agents](
    [id] [int] NULL,
    [AgentsView] [varbinary](max) NULL
)

然后运行:

INSERT INTO [dbo].[Agents] VALUES
(1, NULL)

然后从PHP页面更新:

<?php
header('Content-Type: text/html; charset=utf-8');
$serverName = "SERVER'TEST";
$connectionInfo = array("Database"=>"Test");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
   echo "Unable to connect.</br>";
   die( print_r( sqlsrv_errors(), true));
}
$tsql1 = "UPDATE [dbo].[Agents] SET [AgentsView] = 0x1EFBBBF3C587472615365726 WHERE id = 1";
$stmt1 = sqlsrv_query( $conn, $tsql1);
if( $stmt1 === false ) {
    echo "Error in executing query.</br>";
    die( print_r( sqlsrv_errors(), true));
}
sqlsrv_free_stmt( $stmt1);
sqlsrv_close( $conn );

我没有得到错误,在Agents表:

id  AgentsView
1   0x1EFBBBF3C587472615365726

那么,你如何得到这个值,你试图写入你的表?你能展示你的PHP代码吗?