【发布时间】:2019-01-05 09:24:57
【问题描述】:
我正在使用 SQL Server DB (mssql),并尝试通过 PHP 执行插入查询。
public function registerCustomer($custId, $custData)
{
$sqlString = "INSERT INTO CUSTMASTER ( CustId, CustData ) values ( ?, CONVERT(varbinary(max),? )) ; SELECT SCOPE_IDENTITY()";
$params = array($custId, $custData);
$stmt = sqlsrv_query($this->conn, $sqlString, $params);
if ($stmt === false) {
die(print_r(sqlsrv_errors(), true));
}
$rows = sqlsrv_has_rows($stmt);
sqlsrv_next_result($stmt);
sqlsrv_fetch($stmt);
$lastId = sqlsrv_get_field($stmt, 0);
if ($rows === true) {
echo "Data Inserted."
} else {
return "Data Insert Failed.";
}
}
我收到以下错误,
Array
(
[0] => Array
(
[0] => IMSSP
[SQLSTATE] => IMSSP
[1] => -15
[code] => -15
[2] => An invalid direction for parameter 2 was specified. SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, and SQLSRV_PARAM_INOUT are valid values.
[message] => An invalid direction for parameter 2 was specified. SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, and SQLSRV_PARAM_INOUT are valid values.
)
)
注意:db 中的 CustData 列是 varbinary(max) 类型。
我正在从 Android 应用程序发送 Base64 字符串,然后使用以下代码将字符串转换为 byte[]。
$a = base64_decode($FingerData);
$custData = array();
foreach (str_split($a) as $c) {
$custData[] = sprintf("%08b", ord($c));
}
如何解决这个问题?
【问题讨论】:
-
也发布您的
$params数组代码,以便我们查看问题所在 -
@IgorIlic:嗨。你的意思是发布实际值?
标签: php sql-server sqlsrv varbinary varbinarymax