首页 > 解决方案 > 从 Android 通过 PHP 将 byte[] 存储到 SQL Server 中的 varbinary(MAX)

问题描述

我正在使用 SQL Server (MSSQL) DB,表 CUST_BIO 有一个数据类型为 varbinary(MAX) 的 CustData 列。我正在使用 Android App 使用 PHP 在此列中存储数据。

  public function registerCust($custId, $custData)
  {


    $sqlString = "INSERT INTO CUST_BIO (CustId,CustData ) values (? ,? ) ; 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);
    $lastId = sqlsrv_get_field($stmt, 0);

    echo "\nLast Inserted Id : " . $lastId . "\n";

    }

这给了我错误:

不允许从数据类型 varchar 到 varbinary(max) 的隐式转换。使用 CONVERT 函数运行此查询。

所以我改变了

线

$params    = array($custId,  $custData );

$params    = array($custId, CONVERT(varbinary(MAX), $custData );

更新此代码后,它给了我另一个错误;

致命错误:调用未定义的函数 CONVERT()

我将 byte[] 从 Android 发送到 PHP webservice 并将其存储在$custData变量中。

我正在尝试将图像存储到数据库中,其他论坛上有很多建议说这不是有效的方式,但我使用这种方式有局限性。

谁能指导我解决这个问题?

标签: phpandroidsql-servervarbinaryvarbinarymax

解决方案


推荐阅读