sqlsrv_query , php 传入的表格数据流(TDS)远程过程调用(RPC)协议流不正确。

问题描述 投票:0回答:1

当我试图用PHP更新SQL Server中的数据时,我得到一个错误。

下面是PHP代码。

$vip_cat = 0x067F63DDED21007F0070000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF067F63E35D57007F0080000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF067F63CFA8BE007F0090000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF067F63B93289007F00A0000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF067F63FF0228007F00B0000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF057FFF05CE4B007F00C0000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14FF959056E2007F000000000000000014FF958DA41D007F0000000000000000157B6D3D506C007F00D0000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF157B6D20EFEA007F00D00000000000005078FF60F6B4000000D00000000000004178FF15D6A7000000D0000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D7B6DA77805007F00D00000000000004078FFBC44CE000000D00000000000000B60009C2B59000000E00000000000000B6000CB7DB8000000E00000000000000B60007AB69B000000E00000000000000B60001117F2000000E0000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B60009C1DED000000E0000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;

$sql = "UPDATE Warehouse SET Items = CAST( ? AS varbinary(1920)) WHERE AccountID = 'shono'";
$params = array($vip_cat);

$stmt = sqlsrv_query( $conn_ms, $sql, $params);
if( $stmt === false ) {
 die( print_r( sqlsrv_errors(), true));
}else{
  echo 'ok';
}

这是我的错误。

Array ( [0] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 8023 [code] => 8023 [2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]传入的表格数据流(TDS)远程过程调用(RPC)协议流不正确。参数3("")。提供的值不是数据类型float的有效实例。检查源数据是否有无效值。无效值的一个例子是比例大于精度的数字类型的数据。消息]=> [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]传入的表格数据流(TDS)远程过程调用(RPC)协议流不正确。参数3("")。提供的值不是数据类型float的有效实例。检查源数据是否有无效值。 无效值的一个例子是比例大于精度的数值类型的数据。) )

我试过的。

$sql = "UPDATE Warehouse SET Items = CAST( (?) AS varbinary(1920)) WHERE AccountID = 'shono'";

还有

$sql = "UPDATE Warehouse SET Items = CAST( $vip_cat AS varbinary(1920)),WarNum = (?) WHERE AccountID = 'shono'";
$params = array(1);
php sql-server
1个回答
1
投票

问题是这样的

$sql = "UPDATE Warehouse SET Items = CAST( **?** AS varbinary(1920)) WHERE AccountID = 'shono'";
**$params = array($vip_cat);**

$stmt = sqlsrv_query( $conn_ms, $sql, **$params**);

我们只需要把$params从$stmt = sqlsrv_query( $conn_ms, $sql, $params);然后我们就会得到正确的代码,就像这样。

$stmt = sqlsrv_query( $conn_ms, $sql);

另外,这里将是SQL的正确COMMAND。

UPDATE Warehouse SET Items = CAST(
0x00..
AS varbinary(1920)) WHERE AccountID = 'shono'
© www.soinside.com 2019 - 2024. All rights reserved.