PHP, SQL Server: saklanan prosedürleri ile ikili verileri kullanma

0 Cevap php

PHP 5.2.13, MS SQL Server 2008 R2

Ben şöyle bir saklı yordam vardır:

CREATE PROCEDURE [dbo].[StoreThing]
    @pid int = 0,
    @data binary(236) = NULL,
AS
BEGIN
    INSERT INTO thingTable (pid, data) VALUES (@pid, @data)
END

(Büyük ölçüde basitleştirilmiş, ama bu konumuzun dışında)

Ben gibi, bir PHP komut dosyası bu yordamı çağırmak çalışıyorum:

function storeThing($pid, $data) {
    global $dbconn;

    if(strlen($data) != 236) return false;

    $proc = mssql_init('StoreThing', $dbconn);

    mssql_bind($proc, '@pid', $pid, SQLINT4);
    mssql_bind($proc, '@data', $data, SQLCHAR, false, false, 236);

    $result = mssql_execute($proc);
    if(!$result) die(mssql_get_last_message());

    return true;
}

Ancak, bu oldukça doğru çalışmıyor. Onu çalıştırdığınızda aşağıdaki hatayı alıyorum:

Warning: mssql_execute() [function.mssql-execute]: message: Implicit conversion from data type char to binary is not allowed. Use the CONVERT function to run this query. (severity 16)

Açıkçası, sorun SQLCHAR Ben veri alanı için ayarlanan türüdür. Hiçbir SQLBINARY sabit olmadığından Ancak, bunu ayarlamak için ne emin değilim.

Alternatif olarak, ben PHP karşılamak için saklı yordam değiştirmek zorunda kalacak? Bunu yapabilirim, ama biraz aptal gibi görünüyor.

0 Cevap